学习 JavaScript:词法与动态作用域

2023-12-11

所以我在读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(使用前将#替换为@)

学习 JavaScript:词法与动态作用域 的相关文章

随机推荐