JavaScript: 块作用域是函数作用域的子集?望得到解答.
插图中来自红宝书第四版的一小段:(第26页)
(图中分别是中英的版本,我都有认真去看)
如图是正在看红宝书第四版的一小段,这里说:
块作用域是函数作用域的子集
Block scope is strictly a subset of function scope
这句话的从集合的角度来看,其实可以理解成:所有的块作用域都是函数作用域.
这句话是否有错误?
let无论是在函数作用域或块级作用域的外部都是无法访问的.而var在函数作用域外部无法访问,在块级作用域外部是可以访问的.
假设这句话是正确的,表明var在块级作用域外部也是无法访问的.这显然跟前面的矛盾了.
因此,我认为应该是作者的笔误了,应该调转过来才对:
函数作用域是块作用域的子集.
回答
没有问题。你对子集的理解上有偏差。
偶数是整数的子集,但偶数都能被2整除,整数集合并不符合这个特征。子集符合的特征,超集一定要符合吗?
人是动物的子集,但是人可以有比动物更具体更特有的功能,这个算不算矛盾?
块级作用域是函数作用域的子集,这里说的是,函数作用域的要求块级作用域都符合,但是块级作用域可以有自己特有的更严苛的要求。
关键点在于这里所谓的集合, 它的元素到底是什么。并不是说子集符合的特征,超集都要符合,而是说,子集里有的元素,超集都有。
以上是 JavaScript: 块作用域是函数作用域的子集?望得到解答. 的全部内容, 来源链接: utcz.com/a/54786.html