JavaScript代码提升 JavaScript调试 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 y 让我试试 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是不确定的吗?? 这是因为只有声明(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" 在下一章. JavaScript调试 JavaScript严格模式