Hoisting是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的初始化未悬挂
JavaScript的只吊声明,没有初始化。
实施例1 没有给出相同的结果与实施例2:
例1
var x = 5; // Initialize x
var y = 7; // Initialize y
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
试一试» 例2
var 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是在最后一个例子未定义?
这是因为只有声明(变量y)时,不初始化(= 7)被提升到上方。
由于hoisting ,Y已申报在使用之前,但因为初始化没有悬挂,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 ,计划可能包含的bug(错误)。
为了避免错误,总是在每一个范围的开头声明所有变量。
由于这是JavaScript的如何解释的代码,它始终是一个很好的规则。
JavaScript的严格模式不允许,如果他们不声明中使用的变量。
学习"use strict"下一章。