为什么以下示例中的x
变量返回undefined
而不是25?
var x = 25;
(function() {
console.log(x);
var x = 10;
})();
答案 0 :(得分:5)
这是javascript中hoisting的常见问题。代码实际上如下所示。该值是在console.log
之后分配的。
第二个未定义(如果在开发人员的工具上运行)是因为该函数没有显式返回任何内容
由于var
吊装:
var x = 25;
(function() {
var x;
console.log(x);
x = 10;
})();
答案 1 :(得分:0)
它是Self-Invoking Functions,无需从特定功能或地点调用即可调用。并且您在该函数中声明的x
并准备运行该函数,使javascript
忽略全局变量x
并尝试创建本地x
。如果删除var x = 10;
从内部的功能,一切都会好的:
var x = 25;
(function() {
console.log(x);
})();