为什么以下这段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没有问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏