函数声明和函数表达式

这是两个非常容易搞混的概念,这里我们总结一下两者的不同

下图非常形象的说明了函数声明的形式

最为主要的特点就是,使用函数声明的方式声明函数,必须强制性的为函数设置一个名称,这个名称作为代码中调用此函数的唯一方式。

另外,函数声明必须是独立的,如下面的代码就是正确的函数声明

function f1(){
        console.log('f1');
    }

下面代码中的f1和f2都是正确的函数声明

function f1(){
        console.log('f1');
        function f2(){
            console.log('f2');
        }
    }

函数表达式也用来声明函数,但是函数表达式一般都写道其他表达式中,如下面的代码

var f1=function(){
        console.log('f1');
    }

中的

function(){
        console.log('f1');
    }

就叫做函数表达式

函数表达式也可以作为其他函数的参数或者返回值

 function f1(n,callback){
        return callback(n);
    }
    var res=f1(3,function(){
        return 3*3;
    })
    console.log(res);

当然函数表达式也可以作为函数的返回值。

总结:

  1. 在代码中的位置不同:函数声明都是独立的;函数表达式一般处于其他表达式中
  2. 名称是否可选:函数声明中,函数名称是强制的;函数表达式中,函数名称完全是可选的
  3. 调用方式不同:使用函数名称+(参数列表)的方式调用函数声明方式声明的函数;调用函数表达式声明的函数则有两种方式

方式1:使用变量名称引用,其实这与直接为函数添加名称差不多

   var f1=function(){
        console.log('f1');
    }
    //调用
    f1();

方式2:立即调用,如果希望马上执行,可以使用下面的语法

(function(){console.log('f1');})();

当然也可以传递参数

(function(n){console.log(n);})(3);

为什么要将函数表达式使用()括起来?

如果不包含起来,引擎在督导 function 的时候,会以为这是一个函数声明,而function关键字后面又没有函数名称,所以语法上会报错。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巴山却话

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值