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的作用域就只是此函数内部,而不会影响到全局。