那么什么叫做全局作用域呢?
客户端JavaScript代码都在全局上下文环境中运行,window对象提供了全局作用域。由于window对象是全局对象,因此所有的全局变量都被视为该对象的属性。
例一:在脚本中自定义一个变量或函数时,可以通过window对象访问它们。
var a="windows.a"; //全局变量
function f() //全局函数
{
alert(a);
}
alert(window.a); //引用window对象的属性a,返回字符串”window.a“
window.f(); //调用window对象的方法f(),返回字符串”window.a“
例二:
定义全局变量与在window对象上直接定义属性还是有一点不同:全局变量不能通过delete运算符删除,而直接在window对象上的定义的属性可以被删除。
var a="a";
window.b="window.b";
c="c"
alert(delete window.a) //返回false,删除失败
alert(delete window.b) //返回true,删除成功
alert(delete window.c) //返回true,删除成功
alert(window.b)
使用var语句声明全局变量,window会为这个属性定义一个名为"configurable"的特性,这个特性的值被设置为false,这样该属性就不可以通过delete运算符删除。
【注意】直接访问未声明的变量,JavaScript会抛出异常,但是通过window对象进行访问,可以判断未声明的变量是否存在
alert(window.a)//返回undefined
alert(a);