-
函数声明和函数表达式的区别
- 优先级
- JavaScript的变量声明提升机制-即可以先使用,后声明
- 函数声明会被提升到作用域的最前面
- 函数表达式不会被提升,运行时赋值,赋值完才能调用(IIFE就不需要赋值了)
- 名称
- 函数表达式可以没有名字
- 形式
- 函数表达式简单理解就是一个函数赋值给一个变量,这个变量就叫函数表达式
- 优先级
-
举个例子
var print // 下面的函数声明被提升了,所以这里 typeof print === function
print() // 2
var print = function (){
console.log(1);
} // 函数表达式赋值,且覆盖函数声明
print() // 1
function print(){
console.log(2);
} // 函数声明
print() // 1
- 所以输出顺序是:
2
1
1
es6 的let不会被提升
网友评论