JavaScript的函数声明和函数表达式

在javascript中,函数声明和函数表达式是有区别的。
     所谓的函数声明是指如下形式:
     function  sum(obj){
          return obj.x+obj.y;
     }
     所谓的函数表达式是指如下形式:
     var sum=function(obj){
         return obj.x+obj.y;
     };
    然后这两者的区别在哪里呢,原来在js中,解析器在向执行环境中加载数据时,对函数声明和函数表达式并非是一视同仁的,解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问),至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解析执行,如下面例子:
<script>
  alert(sum({x:10,y:10}));
   function  sum(obj){
          return obj.x+obj.y;
   }
</script> 
以上代码可以正常运行,因为代码在开始执行前,解析器就已经读取函数声明并将其添加到执行环境中了。如果把上面函数声明改成函数表达式的形式,就会在执行期间报错:
<script>
  alert(sum({x:10,y:10}));
   var sum=function(obj){
          return obj.x+obj.y;
   };
</script>
报错的原因就是在执行alert(sum({x:10,y:10}));时函数表达式sum还没有添加到执行环境中,所以我们在撰写js程序时要养成一个比较好的习惯.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值