为了账号安全,请及时绑定邮箱和手机立即绑定

js函数声明的疑问

js函数声明的疑问

慕姐8265434 2018-12-20 14:13:18
为什么第一个fn()执行结果是2 而不是undefined?(function(){    fn();    var fn=function(){        alert(1);    };    fn();    function fn(){        alert(2);    };})()
查看完整描述

1 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

在预编译阶段,函数声明提升优先于变量声明提升的。

// 预编译阶段

function fn(){

    alert(2);

};

var fn;


// 执行阶段

fn();    // 此时结果为 2

fn = function() {

    alert(1);

}

fn();    // 此时结果为 1


查看完整回答
反对 回复 2019-01-08
  • 1 回答
  • 0 关注
  • 448 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信