gpt4 book ai didi

javascript - 如何使函数内部的变量成为全局变量?

转载 作者:数据小太阳 更新时间:2023-10-29 05:00:04 26 4
gpt4 key购买 nike

以下是我的 javascript 函数,我想在函数外部使用变量 selected,但我在控制台中收到 selected not defined 错误检查元素。 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);
}
}
}

最佳答案

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

  1. 全局声明它,然后在函数中关闭 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);
    }
    }
    }
  2. 分配给 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 不是全局的,它对函数中的任何东西都是通用的。

关于javascript - 如何使函数内部的变量成为全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29714642/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com