函数表达式使用的注意事项

35 篇文章 0 订阅

函数声明提升

sayHi();
function satHi() {
    alert("Hi");
}
//这个是没问题的,函数在代码执行之前会先读取函数声明。但是当使用函数表达式的时候下面的例子会抛出错误。
sayHi(); //错误;函数不存在
var sayHi = function() {
    alert("Hi");
}

函数声明与表达式之间的区别。

//不要这样做
if(condition){
    function sayHi(){
        alert("Hi");
    }
} else {
    function sayHi(){
        alert("Yo");
    }
}

//表面上看的代码表示conditon为true时,使用一个sayHi()的定义;否则使用另一个定义。实际上,这在ECMAScript中属于无效语法,JavaScript引擎会尝试修正错误,将其转化成合理的状态。但问题是浏览器修正错误的做法是不一致的。大多数浏览器会忽略condition,返回第二个申明。 Firefox会在condition为true是返回第一个声明。所以这种写法不应该出现在你的代码中。 so,在这里我们可以使用函数表达式,就不会出现什么问题了。
//可以这样做
var sayHi;
if(condition){
    sayHi = function(){
        alert("Hi!");
    };
} else {
    sayHi = function(){
        alert("Yo!");
    };
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值