var i = 0; for (let i = i; i < 10; i++) { console.log(i); }
运行以上代码,抛出ReferenceError: i is not defined。如何理解?
ReferenceError: i is not defined
这个问题好像比较深奥,不过我不信这是Node的bug,或许是语言规范里面有规定,然后按照这个规定来做就造成了:在特殊情况下,语言不够完美。。。
在块内 let 申明会造成 Temporal Dead Zone
let
Temporal Dead Zone
let i=i 明显不合理
来自酷炫的 CNodeMD
暂时性死区 只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。 也就是说let i = i这句右边的i是没经过声明的变量,肯定报错了
暂时性死区
let i = i
统一回复,谢谢大家的热心回答
@riyueweiyi ==<p style=“text-align:right”><a href=“https://github.com/lumia2046/cnode”> — — 来自lumia2046-react-cnode</a></p>
高程 TDZ From Noder
在for循环开头的声明相当于在for外面声明
运行时不可能在块级作用域和全局作用域间切换,这样块级作用域就不存在了
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
这个问题好像比较深奥,不过我不信这是Node的bug,或许是语言规范里面有规定,然后按照这个规定来做就造成了:在特殊情况下,语言不够完美。。。
在块内
let申明会造成Temporal Dead Zonelet i=i 明显不合理
来自酷炫的 CNodeMD
暂时性死区只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。 也就是说let i = i这句右边的i是没经过声明的变量,肯定报错了统一回复,谢谢大家的热心回答
@riyueweiyi ==<p style=“text-align:right”><a href=“https://github.com/lumia2046/cnode”> — — 来自lumia2046-react-cnode</a></p>
高程 TDZ From Noder
在for循环开头的声明相当于在for外面声明
运行时不可能在块级作用域和全局作用域间切换,这样块级作用域就不存在了
来自酷炫的 CNodeMD
暂时性死区