小编bif*_*kin的帖子

ES6/Node中的词法范围

我试图理解ES6词法范围(使用节点运行时).考虑以下:

'use strict';
let x = 10;
function f() {
   console.log(x);
   console.log(y); // This should crash
}

let y = 5;
f();
Run Code Online (Sandbox Code Playgroud)

从O'Reilly的书"学习Javascript"中解释:

词法作用域意味着您定义函数的范围内的任何变量(与您调用它时相反)都在函数的范围内.

但是,当我运行此程序(通过节点)时,它输出:10 5

是不是调用console.log(y)打破了这里的词法范围规则?如果没有,为什么不呢?

编辑:为了将来参考,似乎教科书的作者(Learning Javascript 3rd Edition O'Reilly)最近在"已确认的勘误表"中将此示例列为错误.在http://www.oreilly.com/catalog/errata.csp?isbn=0636920035534

javascript scoping lexical node.js ecmascript-6

0
推荐指数
1
解决办法
1292
查看次数

标签 统计

ecmascript-6 ×1

javascript ×1

lexical ×1

node.js ×1

scoping ×1