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初始化
下一篇: 如何创建一个全局函数内部的变量?