![JavaScript从入门到精通(微视频精编版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/726/32463726/b_32463726.jpg)
上QQ阅读APP看书,第一时间看更新
4.6 变量的作用域
![](https://epubservercos.yuewen.com/FAB06F/17527145906009606/epubprivate/OEBPS/Images/Figure-P85_8013.jpg?sign=1739905259-hko540OfPLjWAshJpIqlZcgb2QRHpilY-0-852450f9ade802b17db3deff172cc566)
视频讲解
变量的作用域是指变量在程序中的有效范围,在有效范围内可以使用该变量。变量的作用域取决于该变量是哪一种变量。
4.6.1 全局变量和局部变量
在JavaScript中,变量根据作用域可以分为两种:全局变量和局部变量。全局变量是定义在所有函数之外的变量,作用范围是该变量定义后的所有代码;局部变量是定义在函数体内的变量,只有在该函数中,且该变量定义后的代码中才可以使用这个变量,函数的参数也是局部性的,只在函数内部起作用。如果把函数比作一台机器,那么,在机器外摆放的原材料就相当于全局变量,这些原材料可以为所有机器使用,而机器内部所使用的原材料就相当于局部变量。
例如,下面的程序代码说明了变量的作用域的有效范围:
01 var a="这是全局变量"; //该变量在函数外声明,作用于整个脚本 02 function send(){ //定义函数 03 var b="这是局部变量"; //该变量在函数内声明,只作用于该函数体 04 document.write(a+"<br>"); //输出全局变量的值 05 document.write(b); //输出局部变量的值 06 } 07 send(); //调用函数
运行结果为:
这是全局变量 这是局部变量
上述代码中,局部变量b只作用于函数体,如果在函数之外输出局部变量b的值将会出现错误。错误代码如下:
01 var a="这是全局变量"; //该变量在函数外声明,作用于整个脚本 02 function send(){ //定义函数 03 var b="这是局部变量"; //该变量在函数内声明,只作用于该函数体 04 document.write(a+"<br>"); //输出全局变量的值 05 } 06 send(); //调用函数 07 document.write(b); //错误代码,不允许在函数外输出局部变量的值
4.6.2 变量的优先级
如果在函数体中定义了一个与全局变量同名的局部变量,那么该全局变量在函数体中将不起作用。例如,下面的程序代码将输出局部变量的值:
01 var a="这是全局变量"; //声明一个全局变量a 02 function send(){ //定义函数 03 var a="这是局部变量"; //声明一个和全局变量同名的局部变量a 04 document.write(a); //输出局部变量a的值 05 } 06 send(); //调用函数
运行结果为:
这是局部变量
上述代码中,定义了一个和全局变量同名的局部变量a,此时在函数中输出变量a的值为局部变量的值。