为什么用于for循环时javascript中的var变量变为全局?

时间:2018-02-12 02:37:36

标签: javascript

我被告知javascript中由 var 定义的变量将是本地的。

例如:

function myFunc(){var v=100; return v;}

如果你在函数外面访问v,你会点击

Uncaught ReferenceError: v is not defined

但后来我发现在for循环中使用时,由 var 定义的变量变为全局变量。例如

for(var i=0;i<10;i++){/*do nothing*/}

在for循环之后,你仍然可以访问变量i。为什么它变得全球化?在函数和for循环中使用有什么区别?

1 个答案:

答案 0 :(得分:3)

在JavaScript中,var仅限于下一个function范围,忽略所有其他类型的块(if,for,while等)

您可以使用let来解决此问题,而是将其限定为块。另请查看const,其行为与let相同,但无法重新分配。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let