Eri*_*ric 11 javascript closures jslint
我有一个问题,试图在函数关闭时使函数成为全局函数.在下面列出的代码中,我有一个匿名方法,它定义了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);
Run Code Online (Sandbox Code Playgroud)
这在浏览器中运行良好,但是当我在JSLint.com中运行代码并打开 "Disallow undefined variables"时,它会给我一个错误.
第17行第7个问题:'
getNameField'未定义.
你能帮我解决这个问题,以便JSLint真正理解这个函数应该被认为是全局的吗?
Tim*_*own 19
您可以将其称为window.getNameField:
alert(window.getNameField().value);
Run Code Online (Sandbox Code Playgroud)
或者你可以在闭包之外定义一个变量:
var getNameField;
(function(){
getNameField=function(fieldId){
// Code here...
};
}());
alert(getNameField().value);
Run Code Online (Sandbox Code Playgroud)
我会尝试
window["getNameField"] = function(fieldId) {
Run Code Online (Sandbox Code Playgroud)