如何创建一个全局函数内部的变量?

以下是我的javascript函数,我想使用变量选择外部函数,但是我在检查元素的控制台中选择了未定义的错误。 window.yourGlobalVariable没有解决我的问题。

function showMe(pause_btn) {
    var selected = [];
    for (var i = 0; i < chboxs.length; i++) {
        if (chboxs[i].checked) {
            selected.push(chboxs[i].value);
        }
    }
}

如果你真的希望它是全球性的,你有两种选择:

  • 在全局声明它,然后将var关闭在函数中:

    var selected;
    function showMe(pause_btn) {
        selected = [];
        for (var i = 0; i < chboxs.length; i++) {
            if (chboxs[i].checked) {
                selected.push(chboxs[i].value);
            }
        }
    }
    
  • 分配给window属性

    function showMe(pause_btn) {
        window.selected = [];
        for (var i = 0; i < chboxs.length; i++) {
            if (chboxs[i].checked) {
                selected.push(chboxs[i].value); // Don't need `window.` here, could use it for clarity though
            }
        }
    }
    

    window的属性是全局变量(你可以在它们前面使用或不使用window.访问它们)。

  • 但是 ,我会避免让它成为全球。 要么showMe返回信息:

    function showMe(pause_btn) {
        var selected = [];
        for (var i = 0; i < chboxs.length; i++) {
            if (chboxs[i].checked) {
                selected.push(chboxs[i].value);
            }
        }
        return selected;
    }
    

    ...然后你需要它的地方:

    var selected = showMe();
    

    ...或者在包含showMe的范围中声明它,但不是全局的。 没有上下文,这看起来完全像上面的#1; 这里有一点上下文:

    (function() {
        var selected;
        function showMe(pause_btn) {
            selected = [];
            for (var i = 0; i < chboxs.length; i++) {
                if (chboxs[i].checked) {
                    selected.push(chboxs[i].value);
                }
            }
            return selected;
        }
    
        // ...other stuff that needs `selected` goes here...
    })();
    

    外部匿名函数是一个“范围函数”,这意味着selected内容不是全局的,它只是该函数中任何内容的共同点。


    做这个:

    var selected;
    
    function showMe(pause_btn) {
        selected = [];
        for (var i = 0; i < chboxs.length; i++) {
            if (chboxs[i].checked) {
                selected.push(chboxs[i].value);
            }
        }
    }
    

    你实际上可以跳过var selected;var selected; 行,但我更喜欢声明我的变量。


    不要使用这个;

     selected = [];
    

    这是一个JavaScript的错误

    window.selected = []; 
    

    在你的功能里面。

    链接地址: http://www.djcxy.com/p/95027.html

    上一篇: How to make a variable which is inside a function global?

    下一篇: How to declare a global variable in JavaScript?