js中函数声明和函数表达式

632 阅读1分钟

//  函数声明
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上卷

函数表达式,基本都是匿名函数,但是不一定都是,也可以有名字,但是没有必要