JavaScript中函数声明与函数表达式的区别

看了很多关于函数表达式与声明之间的区别和用法简介,但是侧重点都有所不同,对于一个新手来说想要的答案总是需要综合不同的链接来学习,现根据最近的学习理解,对函数表达式与声明的用法进行总结,希望能有所帮助,如有不正确的地方望大神指正。

函数声明与函数表达式的定义

(1)函数声明
函数声明: function 函数名(参数){ 函数体}
注:函数声明中的函数名必须有,参数非必须

   function add(){}  // 函数声明

(2)函数表达式
命名函数表达式:function 函数名(参数){函数体}
匿名函数表达式:function(参数){函数体}
注:函数表达式中的参数非必须,且命名函数表达式中的函数名也是非必须

   var del = function del(){} // 命名函数函数表达式
   var update= function(){} // 命名函数函数表达式
   function(){} // 匿名函数表达式

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

(1)函数的定义
函数声明的函数名必须得写,而函数表达式中的函数名可写可不写。
为此可有通过是否有函数名将声明与表达式进行初步筛选,即没有函数名的肯定是函数表达式,进一步我们可以结合前后语句判断该函数前是否有赋值符号“=”,如果有赋值符号则为函数表达式,否则函数声明。
(2)函数的调用
函数声明可以先调用再声明,而函数表达式则必须得先定义再调用。

   函数声明
   
   console.log('函数调用开始');
   add();//正常
   console.log('函数调用结束');
   function add(x,y){
   	   return(x+y);
   }
   //因为函数声明有提升效果即在作用域内函数声明会提前(hoist),所以对函数声明可以先调用再声明
   //上述表达式等价于
   function add(x,y){
   	   return(x+y);
   }
   console.log('函数调用开始');
   add();
   console.log('函数调用结束');   
   函数表达式
   
   console.log('函数调用开始');
   sub();//报错
   console.log('函数调用结束');
   var sub = function(x,y){
   	   return(x-y);
   }
   //因为函数表达式没有提升效果,所以对函数表达必须先定义再调用,否则会报错
   //上述代码修改后即可运行
   var sub = function sub(x,y){
   	   return(x-y);
   }
   console.log('函数调用开始');
   sub();//正常
   console.log('函数调用结束');   

(3)函数的执行
函数表达式可以直接在函数定义后面加小括号执行,而函数声明则不行


   var mult = function(x,y){ return(x*y); }();//正常
   function div(x,y){ return(x/y); }()//报错 

对于函数声明与函数表达式的使用切记,函数声明可以先调用再声明,而函数表达式必须先定义再调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值