在javascript里,所有的声明以及变量的赋值基本都是遵循:声明==>赋值==>调用,或者是:初始化==>调用,最后都会被释放清理。但是,其中有个变量提升的问题,如下:
var x = 5; // 初始化 x
var y = 7; // 初始化 y
console.log(x+y);
var x2 = 5; // 初始化 x
console.log(x2+y2);
var y2 = 7; // 初始化 y
当你调用的时候就会发现:第二个为NaN!再看下边这个:
var x1;
var y1;
x1=5;
y1=7;
console.log(x1+y1);
var x;
x2=5;
console.log(x2+y2);
y2=7;
var y2;
在javascript中,函数及变量的声明都将被自动提升到函数的最顶部!JavaScript 中,变量可以在使用后声明,也就是变量可以先使用再声明。
上边四个例子很好的解释了变量提升--hoisting,对于大多数程序员来说并不知道 JavaScript 变量提升。
如果程序员不能很好的理解变量提升,他们写的程序就容易出现一些问题。为了避免这些问题,通常我们在每个作用域开始前声明这些变量,这也是正常的 JavaScript 解析步骤,易于我们理解。
注意:JavaScript 严格模式(strict mode)不允许使用未声明的变量!
热门评论
然而第二段代码还是nan,因为你的赋值语句没有写在输出前