以下是我的javascript函数,我想使用变量选择 外部函数,但我在inspect元素的控制台中选择了未定义的错误.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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
T.J*_*der 13
如果您真的希望它是全球性的,您有两种选择:
全局声明它然后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);
}
}
}
Run Code Online (Sandbox Code Playgroud)分配给一个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
}
}
}
Run Code Online (Sandbox Code Playgroud)
属性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;
}
Run Code Online (Sandbox Code Playgroud)
......然后你需要它:
var selected = showMe();
Run Code Online (Sandbox Code Playgroud)
...或在包含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...
})();
Run Code Online (Sandbox Code Playgroud)
外部匿名函数是一个"范围函数",这意味着它selected不是全局的,它对于该函数中的任何东西都是常见的.