以下是我的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);
}
}
}
答案 0 :(得分: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);
}
}
}
分配到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...
})();
外部匿名函数是一个&#34;范围函数&#34;这意味着selected
不是全球性的,它对于该函数中的任何事物都是常见的。
答案 1 :(得分:2)
我建议不要在函数外部创建自己的对象,然后从那里分配变量,而不是将其分配给窗口对象或在函数外部声明它。这样可以避免使窗口对象混乱,并将所有全局变量放在一个位置,使它们易于跟踪。 例如,
var globalObject {}
function MyFunction {
globalObject.yourVariableName=what your variable is
}
答案 2 :(得分:1)
这样做:
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;
行,但我更喜欢声明我的变量。
答案 3 :(得分:1)
不要使用它;
selected = [];
这是javascript的错误
window.selected = [];
你的功能。
答案 4 :(得分:0)
您可以在定义名为selected
的函数的范围内定义名为showMe
的数组。
就代码而言:
var selected = [];
function showMe(pause_btn) {
for (var i = 0; i < chboxs.length; i++) {
if (chboxs[i].checked) {
selected.push(chboxs[i].value);
}
}
}
答案 5 :(得分:0)
var selected = [];
function showMe(pause_btn) {
for (var i = 0; i < chboxs.length; i++) {
if (chboxs[i].checked) {
selected.push(chboxs[i].value);
}
}
}
答案 6 :(得分:0)
如果您将selected
声明为窗口对象上的属性,则可以从其他任何位置访问它。
function showMe(pause_btn) {
window.selected = [];
for (var i = 0; i < chboxs.length; i++) {
if (chboxs[i].checked) {
selected.push(chboxs[i].value);
}
}
}