【发布时间】:2015-09-11 14:42:45
【问题描述】:
与传统的 var 声明的变量不同,它们附加到整个封闭的函数范围,无论它们出现在哪里 - let 声明附加到块范围但 直到它们出现在块中才被初始化 em>
所以:
console.log( a ); // undefined
console.log( b ); // ReferenceError!
var a;
let b;
所以这里似乎没有应用提升。
问题
如果是这样,我怎样才能安全地检查变量是否已被声明?
NB - 我看到的选项是 try/catch,当然总是将 let 变量放在作用域的首位。但我的问题仍然存在
【问题讨论】:
-
您无法检查是否已声明任何变量(
let或var)。您只能检查它们是否已被定义。你为什么要这样做呢?你的用例是什么? -
@AaditMShah 案例正在学习中。使用 var 我可以做到:
if (typeof a ==='undefined') -
编辑了我的评论。您正在做的是检查变量是否已定义。您没有检查它是否已被声明。
-
当它试图用
let做一些不打算做的事情时,它真的在学习吗?这是一个块范围,因此没有理由在该块之外检查它。 -
标签: javascript ecmascript-6 let