首页 > 代码库 > 关于JS函数变量作用域

关于JS函数变量作用域

这样一段代码:

var a = 123function f() {    console.log(a);     var a = 1;     console.log(a);}

执行f(),会怎样输出呢?

 

你可能会想当然的第一次console.log输出的是123,也就是全局变量的值,而第二次显示是1。

但是,最先输出的是undefined。

 

函数的作用域始终优先于全局作用域,所以局部变量a会覆盖掉与他同名的全局变量,尽管第一次console.log的时候,a还没有被正式定义,但该变量已经存在本地空间了。即输出undefined。

关于JS函数变量作用域