我已阅读并通过自己的经验发现JavaScript没有块范围.假设语言是出于某种原因而设计的,那是什么原因?
我在谷歌和周围环顾四周,但我发现的帖子只是重申JS有功能范围而不是阻止范围,没有解释原因.我很想知道为什么会出现这种情况.
mpl*_*jan 114
将我的评论转换为答案
创作者的选择:我在推特上发布了Brendan并得到了以下答案:
@mplungjan 10天没有为块范围留出时间.此外,90年代中期的许多"脚本语言"的范围很小,而且后来增长得更多.
也就是说,这里有一些相关的观点:
重要提示:JavaScript没有块范围.块中引入的变量的范围限定为包含函数或脚本,设置它们的效果将持续超出块本身.换句话说,块语句不引入范围.虽然"独立"块是有效的语法,但您不希望在JavaScript中使用独立块,因为如果您认为它们在C或Java中执行类似块的操作,则它们不会按照您的想法执行操作.
我们可以通过创建新函数并立即调用它们来人为地引入范围
let
和const
声明的变量高挂,但他们都没有初始化undefined
以同样的方式var
是.因此,在赋值之前引用let
或const
声明变量会引发ReferenceError.
在同一块作用域中重新声明相同的变量会引发SyntaxError.
Aad*_*hah 12
由于以下原因,未实施块范围:
if
语句中声明和定义变量.在像C这样的语言中,您必须在if
语句外声明变量并在语句中定义它if
. 归档时间: |
|
查看次数: |
13122 次 |
最近记录: |