定义函数的方法有两种:函数声明和函数表达式
类似这样的就是函数表达式
var x = function () {
alert(1);
};
两者有什么不同?
函数表达式可以忽略标识符,不需要取名字
最重要的差别:
函数声明会提升,在执行代码之前会先读取函数名称。这就意味着可以把函数声明放到调用它的语句后面。但函数表达式不能。
f();
var f=function(){
alert(1);
}
//这样会报错
如下就不会报错,代码会正常运行
f();
function f(){
alert(1);
}
解析器在向执行环境中加载数据时,对函数声明和函数表达式并非一视同仁。解析器会率先读取函数声明,并使其在执行任何代码之前可用。至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解析执行。--摘红宝书