文章目录
一、什么是变量声明提前和函数声明提前?
(1)变量声明提升:声明(只是声明,但不涉及赋值)都被提前到函数
的顶部,而变量赋值操作留在原来的位置。举例说明:
实际为:
(2)函数声明提升:函数的声明在执行前会被提升到该作用域顶部,所以可以把函数声明放在调用它的语句后面。举例说明:
var getName=function(){
console.log(2);
}
function getName(){
console.log(1);
}
getName();
可能有人会觉得最后输出结果为1。我们进一步分析,这个例子中变量声明提前和函数声明提前都有涉及,所以getName也是一个变量。
所以实际为:
var getName; //变量声明提前
function getName(){
//函数声明提前到顶部
console.log(1);
}
getName=function(){
//变量赋值依然保留在原来的位置
console.log(2);
}
getName(); //最终输出为2