函数声明提升
定义函数有两种方式:
- 函数声明
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
注:函数声明提升
先于变量声明提升
,且不会被变量声明提升
所覆盖。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。