函数声明提升

定义函数有两种方式:

  • 函数声明
sayName("123");//123
function sayName(name){
    alert(name);
}
  • 函数表达式
sayName("123");//报错,该函数不存在
var sayName = function(name){
    alert(name);
};

上述代码出现不同的执行结果,是因为函数声明的一个重要特征:函数声明提升,意思是函数声明会被提升到顶部,即首先读取函数声明。
与之类似的还有变量声明提升,即将变量的声明提升到顶部。

var sayName = function(){
    alert(1);
};
function sayName(){
    alert(2);
}
sayName();//?

上述代码等价于:

function sayName(){    //函数声明提升
    alert(2);
}
var sayName;//变量声明提升
sayName = sayName(){    //覆盖函数声明
    alert(1);
}
sayName();//1

注:函数声明提升先于变量声明提升,且不会被变量声明提升所覆盖。


PluckyChuang
3 声望1 粉丝

正在啃js高程的前端小白


下一篇 »
Extjs 笔记