如何在声明ES6值后将其确定为var / const / let?

mik*_*ana 9 javascript const let

我知道我可以找出一个值是var const还是let通过查看它的声明位置。但是,我想知道-主要是用于调试,开发JS编译器以及学术兴趣-是否有可能在创建变量后找出变量的不变性/范围(var / const / let-ness)。

doThing(something)
Run Code Online (Sandbox Code Playgroud)

会回来

let
Run Code Online (Sandbox Code Playgroud)

或同等学历。就像我们可以使用构造函数typeofsomething.constructor.name为构造函数确定类型。

Ry-*_*Ry- 5

你能辨别letconstvar直接eval在相同的功能变量:

let a;

try {
    eval('var a');
    // it was undeclared or declared using var
} catch (error) {
    // it was let/const
}
Run Code Online (Sandbox Code Playgroud)

由于@JonasWilms早前写的,你能辨别letconst通过尝试分配:

let a;

try {
    eval('var a');
    // it was undeclared or declared using var
} catch (error) {
    // it was let/const
}
Run Code Online (Sandbox Code Playgroud)