クロージャに関係しているときに関数をグローバルにしようとすると問題が発生します。window
以下にリストされているコードには、呼び出された、の新しい関数を定義する匿名のメソッドがありますgetNameField
。
(function () {
function alertError (msg) {
alert(msg);
}
window.getNameField = function (fieldId) {
try{
if(!fieldId) {
fieldId='name';
}
return document.getElementById(fieldId);
} catch(e) {
alertError(e);
}
};
}());
alert(getNameField().value);
これはブラウザではうまく機能しますが、「未定義の変数を許可しない」をオンにしてJSLint.comでコードを実行すると、エラーが発生します。
17行目の7文字目の問題:'
getNameField
'が定義されていません。
JSLintがこの関数をグローバルと見なす必要があることを実際に理解できるように、これを修正するのを手伝ってもらえますか?