为什么以下这段javascript代码运行结果是4而不是5?

var a = 1;
{ 
    a = 3;
    function a() {}
    a = 4;
    function a() {}
    a = 5;
}
console.log(a);

js code.png

阅读 1.5k
3 个回答

你这个函数重复定义吧?!

读题就觉得不对劲,如我所料,是5

image.png

确实在Chrome上是4,查了一下,应该是Safari修复了这个问题。问题的原因是这样:

如果一个变量未指定其初始值,那么不管这些变量放在同名的函数名之前还是之后,变量的引用都会被函数覆盖

所以你定义之后再赋值,引用是指向函数,就没有赋值成功。

所以本问题还机智的用一个代码片段,来保证console.log所打印的a没有问题。

推荐问题
宣传栏