gpt4 book ai didi

javascript - JavaScript 中的变量作用域

转载 作者:太空宇宙 更新时间:2023-11-04 16:00:06 24 4
gpt4 key购买 nike

    calValue: function (data) {
var self = this;
var values = data.values;
for (var i = 0; i < data.length; i++) {
if(data.condition == 0){
(function (values) {
for (i = 0; i < values.length; i++) {
}
})(values)
}
else{
//do sth else
}
}
}

我的理解是每个函数都有自己的上下文,并且在其中声明的变量只会在内部有效。就像上面的代码片段一样,我希望内部 for 循环内的“i”变量不会影响外部的“i”变量。然而,事实是它确实有影响。

有人可以帮忙解释一下吗?谢谢。

最佳答案

对于 var 声明,作用域位于 function 级别。此类声明被解释为好像它们出现在封闭函数的最开始处。

在现代 JavaScript 环境中,let 声明允许您创建作用域为本地语句 block 的变量。 (对于不可修改的符号,也使用 const。)

在您的情况下,嵌套函数中的内部 i 仅引用外部声明的 i 。从函数内部,您始终可以“看到”外面,但无法“看到”内部。这就是作用域的工作原理。

关于javascript - JavaScript 中的变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42336649/

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