函数声明和函数表达式的区别

函数声明:

function say(param){
console.log('hellow '+param)
}


函数表达式:

var say = function(param){
console.log('hellow '+param)
}

可以看到函数表达式多了一个赋值“=”,将这个指针保存在变量中,它们的运行效果是一样的。

 

 

注意点:(在js解析器的解析下它们的调用顺序是一不一样的)

例子:(函数声明:这种方式不管你是在代码最前端声明还是放在最后声明,它们在解析时都会被放在最前端;)

say('world');

function say(param){
console.log('hellow'+param)
}

//hellow world

 

例子:(函数表达式:你必须按照调用顺序先写表达式再去调用)

say('world');

var say =function(param){
console.log('hellow '+param)
}

//Uncaught TypeError: say is not a function(…)

可以看到上面的不同结果,函数声明方式创建的函数在JS中就是一等公民。具有最有最优先权!

 

 

当然有例外情况:比如你应用了Common JS的模块规范;

var say =function(param){
console.log('hellow '+param)
}

module.exports = {
say: say
}

在这种情况下,你的方法已经暴露出去了,这个方法在代码的任何一个上下文中都可以执行,相当于函数声明的方式!

 

posted @ 2016-09-27 11:02  萧了个晓  阅读(127)  评论(0编辑  收藏  举报