JavaScript程序员

JS——变量的作用域

2017-03-15  本文已影响69人  sky丶星如雨

JS中变量的作用域问题,对于初学者来说,理解的并不是很透彻,下面,我用较短的篇幅来简单谈一下。

变量分为两种,一种是全局变量,一种是局部变量,在讨论该变量为哪一种变量时,本质上,就是在讨论变量的作用域。

全局变量:即可以在脚本中任何位置被引用的变量,甚至在函数内部,也可以引用,这说明,全局变量的作用域是整个脚本。

局部变量:即只存在于声明它的函数的内部,在此函数外部,无法引用该变量,也就是说,局部变量的作用域仅限于某个特定的函数。

那么,如何分辨两者呢,其实很简单,我们都知道,JS中,变量是通过var来声明的,如果在某个函数中使用var来声明变量,那么,此变量即为局部变量,它的作用域就仅限此函数内部,如果在此函数中声明时,没有使用var,那么此变量即为全局变量,如果整个代码中,有一个与此变量同名的全局变量,这个函数就会改变那个全局变量的值。

举个例子来说明:

function  count(num) {

total= num + num;

return  total;

}

var  total=50;

count(10);

alert(total);

这里函数中的total没有使用var声明,所以,此时total的作用域为全局,而代码中已有一个名为total的变量,所以,函数中声明的total改变了函数外total的值,此时,alert输出20;

很多时候,我们都需要避免这种情况的发生,那么只需将函数内变量使用var声明即可,将它的作用域限制在函数体内部,即

function  count(num) {

var  total= num + num;

return  total;

}

此时,total的作用域就只是此函数内部,而不会影响到全局。

上一篇下一篇

猜你喜欢

热点阅读