繁体   English   中英

为什么在for循环中使用javascript的var变量会变成全局变量?

[英]Why var variable in javascript become global when used in for loop?

有人告诉我var在javascript中定义的变量将是本地的。

例如:

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

如果您在函数之外访问v,您将点击

Uncaught ReferenceError: v is not defined

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

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

在for循环之后,您仍然可以访问变量i。 为什么它成为全球性的? 在功能和for循环中使用时有什么区别?

在JavaScript中, var仅作用于下一个function作用域,而忽略所有其他类型的块(if,for,while等)。

您可以使用let来解决此问题,而范围仅限于块。 还要查看const ,其行为与let相同,但是不能重新分配。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM