当涉及闭包时,我试图将函数设为全局时遇到问题。在下面列出的代码中,我有一个匿名方法,该方法在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中运行“禁用未定义的变量”的代码时,它给了我一个错误。
您能帮我解决这个问题,以便JSLint真正了解应该将此函数视为全局函数吗?
最佳答案
您可以将其称为window.getNameField
:
alert(window.getNameField().value);
或者,您可以在闭包之外定义一个变量:
var getNameField;
(function(){
getNameField=function(fieldId){
// Code here...
};
}());
alert(getNameField().value);
关于javascript - 如何在JavaScript中定义新的全局函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3914483/