函数的定义方式
- 函数声明
function foo () {
}
- 函数表达式
var foo = function () {
}
- new Function
函数声明与函数表达式的区别
函数声明必须有名字
函数声明会函数提升,在预解析阶段就已创建,声明前后都可以调用
函数表达式类似于变量赋值
函数表达式可以没有名字,例如匿名函数
函数表达式没有变量提升,在执行阶段创建,必须在表达式执行之后才可以调用
if (true) {
function f () {
console.log(1)
}
} else {
function f () {
console.log(2)
}
}
以上代码执行结果在不同浏览器中结果不一致,下面是解决方案
var f
if (true) {
f = function () {
console.log(1)
}
} else {
f = function () {
console.log(2)
}
}