var a = 1;
{
a = 3;
function a() {}
a = 4;
function a() {}
a = 5;
}
console.log(a);
var a = 1;
{
a = 3;
function a() {}
a = 4;
function a() {}
a = 5;
}
console.log(a);
读题就觉得不对劲,如我所料,是5
确实在Chrome上是4,查了一下,应该是Safari修复了这个问题。问题的原因是这样:
如果一个变量未指定其初始值,那么不管这些变量放在同名的函数名之前还是之后,变量的引用都会被函数覆盖。
所以你定义之后再赋值,引用是指向函数,就没有赋值成功。
所以本问题还机智的用一个代码片段,来保证console.log所打印的a没有问题。
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
你这个函数重复定义吧?!