JS--函数表达式

定义函数有两种方式:一种是函数声明,一种是函数表达式

函数声明的方式:是由function关键字,然后是函数名指定函数的方式。(FF、Safari、chrome、opera都给函数指定了一个非标准name属性,通过这个属性可以访问到给定函数指定的名字。)

关于函数声明,有个重要特征就是函数声明提升。意思是在执行代码之前,会先读取函数声明。这就意味着函数执行可以放在函数声明之前执行。

sayHi()

function Sayhi(){

//函数体

}

函数表达式的方式:先说一种常见的写法

var fnName = function() {

//函数体

}

这种情况下创建的函数叫做匿名函数(又叫做拉姆达函数),匿名函数的name属性值为空字符串。

注意:函数表达式和其他表达式一样,在使用前必须赋值,如下(不要这样去做)

fnName()

var fnName = function Sayhi(){

//函数体

}

理解函数提升的关键,就是理解函数声明与函数表达式之间的区别。

下面举一个例子:

if(condition){

function say(){

alert(1)

}

}else{

function say(){

alert(2)

}

}

如上写法,大多数浏览器会返回第二个函数声明,但是FF会在condition为true的时候返回第一个函数声明。这样做是很危险的行为。如果改为以下的写法就可以了。

var say;

if(condition){

say = function (){

alert(1)

}

}else{

say = function (){

alert(2)

}

}

    原文作者:FeRookie
    原文地址: https://www.jianshu.com/p/c014619bba8a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞