所以我在读this本书,遵循代码示例并使用节点控制台运行它们。在第 7 章“词法与动态作用域”段落中,作者声称以下代码将导致错误:
const x = 3;
function f() {
console.log(x); // this will work
console.log(y); // this will cause a crash
}
const y = 3;
f();
这是因为(正如书中所读)
JavaScript 中的作用域是词法的......
and
词法作用域意味着您定义函数的作用域(而不是调用它时)内的任何变量都在该函数的作用域内。
然而这段代码运行得很好,并产生以下输出:
3
3
我搜索了词法范围的其他示例及其含义,但它们似乎都暗示了与书中所说的略有不同的内容。所以我想知道,书中的解释是完全错误的还是我错过了一些非常基本的东西?
引用的描述...
词法作用域意味着您定义函数的作用域(而不是调用它时)内的任何变量都在该函数的作用域内。
… 是正确的。
代码示例是错误的。功能f
可以访问声明它的作用域中存在的任何变量(或常量)。这本书似乎错误的是,可以在声明函数之后将常量添加到该作用域。
函数声明的位置很重要。当它被宣布时,没有那么多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)