Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中定义新的全局函数_Javascript_Closures_Jslint - Fatal编程技术网

如何在javascript中定义新的全局函数

如何在javascript中定义新的全局函数,javascript,closures,jslint,Javascript,Closures,Jslint,当函数涉及到闭包时,我在尝试使其成为全局函数时遇到了一个问题。在下面列出的代码中,我有一个匿名方法,它在窗口中定义了一个名为getNameField的新函数 (function () { function alertError (msg) { alert(msg); } window.getNameField = function (fieldId) { try{ if(!fieldId) {

当函数涉及到闭包时,我在尝试使其成为全局函数时遇到了一个问题。在下面列出的代码中,我有一个匿名方法,它在
窗口中定义了一个名为
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);

这在浏览器中非常有效,但是当我在“禁止未定义变量”打开的情况下运行代码时,它会给我一个错误

第17行的问题字符7: 未定义“
getNameField

你能帮我解决这个问题,让JSLint真正理解这个函数应该是全局的吗?

我会试试

window["getNameField"] = function(fieldId) {

JSLint为此目的接受注释注释。阅读使用
/*global*/
注释

您可以将其称为
窗口。getNameField

alert(window.getNameField().value);
也可以在闭包外定义一个变量:

var getNameField;

(function(){
    getNameField=function(fieldId){
        // Code here...
    };
}());

alert(getNameField().value);

这完全没有什么区别。“这在浏览器中非常有效”那么问题出在哪里?我只是想确保我是按照javascript规范编写代码的,而不是使用某种“黑客”。同样,我可以创建一个充当“名称空间”的变量,其中,变量是关联数组,函数被分配给关联数组中的一个条目。缺点虽然很小,但如果我想保持一致性,我必须重新设计所有代码以使用“namespace”变量。事实上,你可以。目前你的代码没有什么大问题。通常在JS代码中,我希望避免使用注释,因为额外的字符会下载到浏览器中。我可以不断添加和删除注释,但我也不喜欢手动操作。是的,如果删除所有注释,文件会变小。如果您通过javascript最小化程序运行它,它也会变小,从而缩短所有变量名并删除所有不必要的空白。在这两种情况下,您都不希望使用“缩小”版本进行开发。要么从源注释中获取微不足道的大小差异,要么在“部署”时制作一个缩小的副本