阅读JavaScript Puzzlers!,我一直在跟进,直到遇到这种情况。
代码
var name = "abc";
(function () {
console.log(name);
var name = "xyz";
console.log(name);
}) ();
退货
undefined
xyz
但是这个
var name = "abc";
(function () {
console.log(name);
}) ();
退货
abc
我很困惑,为什么第一次调用时第一个代码是
name
未定义?我猜这是因为 JavaScript 提升和其他原因。这两段代码有什么不同?