任何程序设计语言都有作用域的概念,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。今天我们来看看在JavaScript中的变量的两种作用域。
全局作用域:
在代码中任何地方都能访问到的对象拥有全局作用域;
1、在最外层函数外面定义的变量拥有全局作用域
1 //在最外层函数外面定义的变量拥有全局作用域 2 var authorName="我的梦想";//全局变量 3 function doSomething(){ 4 var blogName="飞往太空";//局部变量 5 function innerSay(){ 6 alert(authorName+"是"+blogName); 7 } 8 return innerSay(); 9 } 10 alert(authorName); //我的梦想
11 doSomething(); //我的梦想是飞往太空
2、所有末定义直接赋值的变量自动声明为拥有全局作用域
1 function doSomething(){ 2 var authorName="我的梦想"; 3 blogName="飞往太空"; 4 alert(authorName+"是"+blogName); 5 } 6 doSomething(); //我的梦想是飞往太空 7 alert(blogName); //飞往太空 8 alert(authorName); //authorName 找不到
3、所有window对象的属性拥有全局作用域
一般情况下,window对象的内置属性都拥有全局作用域,例如window.name、window.location、window.top等等。
局部作用域
局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部,所有在一些地方也会看到有人把这种作用域称为函数作用域。
例如:下列代码中的blogName和函数innerSay都只拥有局部作用域
function doSomething(){ var blogName="我的梦想"; function innerSay(){ alert(blogName); } innerSay(); } alert(blogName); //脚本错误(blogName未找到) innerSay(); //脚本错误( innerSay未找到)
此内容是通过我翻阅资料整理来的,如有不足望大神们多多补充!!!