这样一段代码:
var a = 123 function f() { console.log(a); var a = 1; console.log(a); }
执行f(),会怎样输出呢?
你可能会想当然的第一次console.log输出的是123,也就是全局变量的值,而第二次显示是1。
但是,最先输出的是undefined。
函数的作用域始终优先于全局作用域,所以局部变量a会覆盖掉与他同名的全局变量,尽管第一次console.log的时候,a还没有被正式定义,但该变量已经存在本地空间了。即输出undefined。
时间: 2024-12-20 22:32:26