JS:为什么“x”变量的值是未定义的?

时间:2018-04-11 16:59:54

标签: javascript function hoisting

为什么以下示例中的x变量返回undefined而不是25?

var x = 25;

(function() {
  console.log(x);
  var x = 10;
})();

2 个答案:

答案 0 :(得分:5)

这是javascript中hoisting的常见问题。代码实际上如下所示。该值是在console.log之后分配的。

第二个未定义(如果在开发人员的工具上运行)是因为该函数没有显式返回任何内容

由于var吊装:

,这就是Javascript实际执行代码的方式

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);
})();