js中函数声明提升理解

js函数的定义两种方式:函数声明和函数表达式

  • 函数声明
    函数调用可以在函数声明之前
test();
function test(){
    alert("this is a test funciton");
}

这是因为js在代码执行之前会先加载函数声明

  • 函数表达式
test();
var test = function(){
        alert("this is a test");
    }

以上代码则会报错,提示未声明先调用

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

if(condition){
    funciton test(){
        alert("condition is true");
    }
}else{
    function test(){
        alert("condition is false");
    }
}

此处是函数声明,test()函数会被提升,而不同的浏览器提升机制不一致,导致有可能只执行第二个test()函数。因此以上例子应该使用函数表达式

if(condition){
     test = funciton(){
        alert("condition is true");
    }
}else{
    test = function(){
        alert("condition is false");
    }
}   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值