【发布时间】:2021-01-04 23:29:47
【问题描述】:
{function foo(){};foo=1;function foo(){};foo=2;}
console.log(foo); // 1
谁能解释这里为什么输出“1”?
编辑: 似乎有一个实现差异,在“Chrome”、“Firefox”、“Nodejs”中输出为“1”,但在“Safari”中输出为“2”
【问题讨论】:
-
长话短说,如果你不想踩得很薄,“使用严格”;
-
是的,它有点与这个问题有关。但是让我困惑的是为什么在第二个函数声明之后,对“foo”的进一步引用只指另一个块级变量“foo”而不是 window.foo
标签: javascript hoisting