CNode

let作用域问题

问答
XxxxxxMiss发布于9 年前最后回复9 年前10 回复4517 浏览0 收藏
var i = 0;
for (let i = i; i < 10; i++) {
  console.log(i);
}

运行以上代码,抛出ReferenceError: i is not defined。如何理解?

查看回复

回复 (10)

Z
zhanzhenzhen#1·9 年前

这个问题好像比较深奥,不过我不信这是Node的bug,或许是语言规范里面有规定,然后按照这个规定来做就造成了:在特殊情况下,语言不够完美。。。

E
eggggger#2·9 年前

在块内 let 申明会造成 Temporal Dead Zone

D
dbit-xia#3·9 年前

let i=i 明显不合理

来自酷炫的 CNodeMD

H
hezhongfeng#4·9 年前

暂时性死区 只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。 也就是说let i = i这句右边的i是没经过声明的变量,肯定报错了

X
xxxxxMiss#5·9 年前

统一回复,谢谢大家的热心回答

S
starhiking#6·9 年前

在for循环开头的声明相当于在for外面声明

O
OneNewLife#7·9 年前

运行时不可能在块级作用域和全局作用域间切换,这样块级作用域就不存在了

来自酷炫的 CNodeMD

N
nnliang#8·9 年前

暂时性死区

X
xxxxxMiss#9·9 年前

@riyueweiyi == — — 来自lumia2046-react-cnode

V
vanishcode#10·9 年前

高程 TDZ From Noder

参与回复
登录后即可参与回复。登录