How to make a variable which is inside a function global?
Following is my javascript function, I want to use variable selected outside function, but I am getting selected not defined error in console of inspect element. window.yourGlobalVariable is not solving my problem.
function showMe(pause_btn) {
    var selected = [];
    for (var i = 0; i < chboxs.length; i++) {
        if (chboxs[i].checked) {
            selected.push(chboxs[i].value);
        }
    }
}
If you really want it to be global, you have two options:
 Declare it globally and then leave the var off in the 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);
        }
    }
}
 Assign to a window property  
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
        }
    }
}
 A properties of window are global variables (you can access them either with or without window. in front of them).  
 But , I would avoid making it global.  Either have showMe return the information:  
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;
}
...and then where you need it:
var selected = showMe();
 ...or declare it in the scope containing showMe , but not globally.  Without context, that looks exactly like #1 above;  here's a bit of context:  
(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...
})();
 The outer anonymous function is a "scoping function" which means that selected isn't global, it's just common to anything in that function.  
Do this:
var selected;
function showMe(pause_btn) {
    selected = [];
    for (var i = 0; i < chboxs.length; i++) {
        if (chboxs[i].checked) {
            selected.push(chboxs[i].value);
        }
    }
}
 You can actually skip the var selected;  line but I prefer declaring my variables.  
Dont use this;
 selected = [];
it is a bug of javascript
window.selected = []; 
inside your function.
链接地址: http://www.djcxy.com/p/95028.html上一篇: 定义vs初始化
下一篇: 如何创建一个全局函数内部的变量?
