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
添加回答
举报
0/150
提交
取消