我被告知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循环中使用有什么区别?
答案 0 :(得分:3)
在JavaScript中,var
仅限于下一个function
范围,忽略所有其他类型的块(if,for,while等)
您可以使用let
来解决此问题,而是将其限定为块。另请查看const
,其行为与let
相同,但无法重新分配。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let