当涉及闭包时,我试图将函数设为全局时遇到问题。在下面列出的代码中,我有一个匿名方法,该方法在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/

10-09 22:57