函数重要的点

变量的作用域

    在 JavaScript 中,变量的定义并不是以代码块作为作用域的,而是以函数作为作用域。也就是说,如果变量是在某个函数中定义的,那么它在函数以外的地方是不可见的。而如果该变量是定义在 if 或者 for 这样的代码块中的,它在代码块之外是可见的。另外,在 JavaScript 中,术语“全局变量”指的是定义在所有函数之外的变量(也就是定义在全局代码中的变量),与之相对的是“局部变量”,所指的则是在某个函数中定义的变量。其中,函数内的代码可以像访问自己的局部变量那样访问全局变量,反之则不行

var a = 123; 
function f() { 
 var a; // same as: var a = undefined; 
 alert(a); // undefined 
 a = 1; 
 alert(a); // 1 
}

 

第一个 alert()实际上显示的是
undefined,这是因为函数域始终优先于全局域,所以局部变量 a 会覆盖掉所有与它同名
的全局变量,尽管在 alert()第一次被调用时,a 还没有被正式定义(即该值为
undefined),但该变量本身已经存在于本地空间了。这种特殊的现象叫做提升(hoisting)。

猜你喜欢

转载自blog.csdn.net/aoshiyunlong/article/details/89741095