开放,开发者控制台(或node.js中),通过序列输入以下代码:关于var/const,为什么这段代码会起作用?
a = 1
var a = 2
const a = 3
正如你可以看到它的工作原理,但如果你一次输入所有的代码,你会得到一个错误,我认为这是比较合理的
我想唯一的区别在于起升,如果你输入所有的代码同时,它也将被处理:
var a
a = 1
a = 2
const a = 3
但我不明白为什么当你用行中输入线,它的工作原理,如果你还跳过前行,你会得到一个错误预期
有趣的现象!您可能会暴露控制台环境的某些特定行为。 –
@AndyRay我尝试在node.js和不同的浏览器中,我得到了相同的结果 – CodinCat
我可以想象,在第一种情况下'var'实际上被忽略,因为全局对象上已经有一个名为'a'的属性(因为'a = 1')。因为这实际上并没有任何宣布'var a'的信息。正如你在第二种情况中指出的那样,'var a'被挂起,因此在'a = 1'发生之前处理,所以不会被忽略。但是,这是猜测,控制台/ REPL环境可能会做奇怪的事情。 –