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

有大佬遇到过这个问题吗:请教声明提升问题,怎么理解这个 fn() 的执行结果呢?

有大佬遇到过这个问题吗:请教声明提升问题,怎么理解这个 fn() 的执行结果呢?

烙印99 2019-07-27 00:41:41
functiona(){console.log(1);}functionfn(){a();if(false){functiona(){console.log(2);}}}fn();//aisnotafunction请问为什么fn()的执行结果是这样的呢?if不管是true/false,结果都是一样的。
查看完整描述

2 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

函数可以被有条件来声明,这意味着,函数声明可能出现在一个if语句里,但是,这种声明方式在不同的浏览器里可能有不同的效果。因此,不应该在生成环境代码中使用这种声明方式,应该使用函数表达式来代替。详情根据官方文档,fn函数中的a:
//在Chrome里:
//'a'变量名被提升,但是typeofa为undefined
//
//在Firefox里:
//'a'变量名被提升.但是typeofa为undefined
//
//在Edge里:
//'a'变量名未被提升.而且typeofa为undefined
//
//在Safari里:
//'a'变量名被提升.而且typeofa为function
                            
查看完整回答
反对 回复 2019-07-27
  • 2 回答
  • 0 关注
  • 218 浏览
慕课专栏
更多

添加回答

举报

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