昨天在笔试4399时遇到一道题:
var foo = 4399;
function foo () {};
console.log(foo);
依据自己以前的理解,以上等同于:
var foo;
foo = 4399;
foo = function () {};
console.log(foo);
这里直接输出的是function foo () {};
但我在浏览器里测试的时候,打印的时候会输出4399.
于是百度了一下,发现在JS中,函数优先变量提升。
以上代码等同于的是
var foo;
foo = function () {};
foo = 4399;
console.log(foo);
这是《你不知道的JavaScript》里面讲到的知识。