二十五岁时我们都一样愚蠢、多愁善感,喜欢故弄玄虚,可如果不那样的话,五十岁时也就不会如此明智。
标题:JavaScript代码提升
代码提升是JavaScript将声明移动到顶部的默认行为。
JavaScript的声明都代码提升
在JavaScript中,一个变量可以在它被使用后再声明.
换句话说,变量可以在它被声明之前使用.
示例1给出了与示例2相同的结果:
示例1:
x = 5; // Assign 5 to x elem = document.getElementById("demo"); // Find an element elem.innerHTML = x; // Display x in the element var x; // Declare x示例2:
var x; // Declare x x = 5; // Assign 5 to x elem = document.getElementById("demo"); // Find an element elem.innerHTML = x; // Display x in the element要理解这一点,你必须理解“hoisting”这个术语
Hoisting JavaScript的默认行为是移动到当前范围内的所有声明的顶部 (到当前脚本或当前函数的顶部).
JavaScript初始化不是hoisting
JavaScript只hoisting声明,初始化不是.
示例1和示例2的结果不一样:
var x = 5; // Initialize x var y = 7; // Initialize y elem = document.getElementById("demo"); // Find an element elem.innerHTML = x + " " + y; // Display x and yvar x = 5; // Initialize x elem = document.getElementById("demo"); // Find an element elem.innerHTML = x + " " + y; // Display x and y var y = 7; // Initialize y在最后一个例子中,y是不确定的吗??
这是因为只有声明(var y),而不是初始化(= 7)被吊到顶部.
由于Hoisting,y在声明之前一直在使用,但因为初始化不Hoisting,y的值是未定义的.
示例2同样这样写:
var x = 5; // Initialize x var y; // Declare y elem = document.getElementById("demo"); // Find an element elem.innerHTML = x + " " + y; // Display x and y y = 7; // Assign 7 to y
在顶部声明变量 !
Hoisting 是(许多开发者)未知的或忽视的JavaScript行为.
如果开发人员不了解Hoisting,程序可能包含错误(错误).
为了避免错误,总是在每个作用域的开始声明所有变量.
这是如何解释的JavaScript代码,这是一个很好的规则.
严格模式JavaScript如果他们没有声明,是不允许使用的, 学习 "use strict" 在下一章.