我已经读过,并通过我自己的经验发现,JavaScript没有块作用域。假设语言是这样设计的是有原因的,你能给我解释一下是什么原因吗?
我在Google和这里四处寻找,但我找到的帖子只是重申了JS有一个函数作用域,而不是阻塞作用域,没有解释为什么。我很好奇为什么会出现这种情况。
发布于 2015-05-13 17:34:58
2015年的新答案。对于带有let
和const
关键字的变量定义,ES6确实具有块作用域。
发布于 2013-06-26 12:50:14
原因有很多,但我想到的一些原因是为了帮助解析/调试使用对象文字(有时看起来像一个块)的代码,并简化局部变量的垃圾收集。
我希望承诺的支持(例如,这里讨论的http://esdiscuss.org/notes/2012-07-25)是真实的,因为使用像i
这样的变量是非常方便的,这些变量只对单个循环是局部的。
https://stackoverflow.com/questions/17311693
复制相似问题