函数声明与函数表达式的区别一直没有搞清楚,现在就来梳理一下
定义一个函数,又是三种方法:
函数声明
函数表达式
通过new function构造函数(这种用来生成对象,与题目无关,略)
接下来我们回到主题,函数声明与函数表达式的区别在哪里?
区别:
- 形式不同;
函数声明:
function declaration(){
console.log('这是函数声明')
}
函数表达式:
var expression = function(){
console.log('这是函数表达式')
}
- 函数声明可以省略标识符(函数名),但是函数表达式必须要有标识符(函数名)
函数表达式省略标识符(函数名)的情况你肯定见过:
function (){
console.log('这是函数声明')
}
但是函数表达式省略标识符(函数名)的情况你见过吗:
var = function(){
console.log('这是函数表达式')
}
肯定没见过吧。
- 函数声明要提前(最大区别)
函数声明是在预执行期执行的,就是说函数声明是在浏览器准备执行代码的时候执行的。因为函数声明在预执行期被执行,所以到了执行期,函数声明就不再执行(人家都执行过了自然就不再执行了)。