
if (true) { function a() {} a=1 console.log('in',a);// in 1 } console.log('out',a);// out f a(){} if (true) { a=1 function a() {} console.log('in',a);// in 1 } console.log('out',a);// out 1 我的理解上 function a() {}都应该提升到最上面,然后再执行 a=1,但是为什么两次的 out 的结果会不一样,第一次的 out 的 a 是什么时候被赋值为 f a(){}的,第二次的 out 又是什么时候被赋值为 1 的,和 if{}块有什么关系么
1 9tao 2020-09-22 14:30:12 +08:00 这种写法是错误的。ES5 的规范,不得在非函数的代码块中声明函数,严格模式下会直接抛出错误,非严格模式下不同浏览器表现可能都不一样。 |