// 函数声明
function wq() {
console.log('我是函数声明')
}// 函数表达式
var wq = function() {
console.log('我是函数表达式')
}函数声明和函数表达式大体作用是一样的,但是区别也是有的,比如函数声明会在js进行解析的时候产生函数提升(如果不太清楚函数提升可以先了解一下),你可以在函数声明的前面,调用这个函数,而不报错(非严格模式)
wq() // 我是函数声明
function wq() {
console.log('我是函数声明')
}这里wq函数这样使用是不会报错的,这是因为产生了函数提升,而函数表达式就会报错
wq() // Uncaught TypeError: wq is not a function
var wq = function() {
console.log('我是函数表达式')
}这里会报这个wq不是一个函数,因为这里会产生变量提升,在执行wq()之前,会先执行var wq这一步,所以这时的wq的值是undefined,不是一个函数,不可以加()执行
区分函数声明和函数表达式
区分函数声明和函数表达式最简单的方法是看function 关键字出现在声明中的位置(不仅仅是一行代码,而是整个声明的位置)。如果function 是声明中的第一个词,那么就是一个函数声明,否则就是一个函数表达式 ———— 你不知道的JavaScript上卷
函数表达式,基本都是匿名函数,但是不一定都是,也可以有名字,但是没有必要