var a= true;if(a) { function foo() {console.log("a");}}else{ function foo() {console.log("b");}}foo();输出的结果是“a”foo();var a= true;if(a) { function foo() {console.log("a");}}else{ function foo() {console.log("b");}}提示foo 不是一个函数;最近看到函数声明提升的问题,有一些困惑,难道不支持函数提升了,可是我又测试了foo();function foo() {console.log("a");}这段代码,可以输出结果“a”;对这些内容有点困惑,希望各位大神能给予解答!
1 回答
已采纳
两年3900165
TA贡献2条经验 获得超1个赞
我给你这段代码变形一下你就明白了:
var a; foo(); a= true; // a的赋值操作是在foo函数执行后才进行的 if(a) { function foo() {console.log("a");} // 函数的定义是在a赋值后才进行的,但是之前执行foo()出错,所以整个if都没有执行 }else{ function foo() {console.log("b");} }
至于你说的这个代码
foo(); function foo() {console.log("a");} 变形:函数的声明提升 function foo() {console.log("a");} foo();
添加回答
举报
0/150
提交
取消