Javascript hoisting confusion
本问题已经有最佳答案,请猛点这里访问。
我读了Kyle的
1 2 3 4 5 6 7 8 9 | foo(); var a = true; if ( a ) { function foo() { console.log("a" ); } }else { function foo() { console.log("b" ); } } foo(); |
foo应该首先被提升,并且应该打印"b"作为第一个foo()的输出,对吗? 或者我错过了什么?
解释或了解代码并在不同场景中提升的链接将是一个很大的帮助。
吊装(以你在这里所期望的方式)只有在有明确的事物的先例顺序时才会起作用。 在这种情况下,因为你的函数是在if块中定义的,所以不会像你期望的那样提升它。
这将有效:
1 2 3 4 5 | foo(); var a = true; function foo() { console.log("a" ); } foo(); |
因为它从等式中删除了你的if语句。