JavaScript中的声明提升规则是在代码执行前,所有的变量声明(使用var关键字)和函数声明都会被提升到当前作用域的顶部,这意味着可以在声明之前使用这些变量和函数,而不会出现未定义的错误。
具体来说,变量声明会被提升,但是变量的赋值不会被提升。例如:
console.log(x); // 输出 undefined
var x = 5;
上述代码中,变量x的声明会被提升到作用域的顶部,所以在使用x之前不会出现错误,但是由于赋值语句没有被提升,所以输出的是undefined。
对于函数声明,整个函数体都会被提升,而不仅仅是函数名。例如:
myFunction(); // 调用函数,输出 "Hello World!"
function myFunction() {
console.log("Hello World!");
}
上述代码中,函数声明会被提升到作用域的顶部,所以在调用函数之前不会出现错误。
需要注意的是,函数声明的提升优先于变量声明的提升。例如:
myFunction(); // 调用函数,输出 "Hello World!"
var myFunction = function() {
console.log("Hello World!");
}
上述代码中,函数声明会被提升到作用域的顶部,所以在调用函数之前不会出现错误。但是由于变量声明的提升优先于赋值语句,变量myFunction在赋值之前就被提升了,所以调用的是undefined,而不是函数本身。