由于window对象同时扮演着ECMAScript中Global对象的角色,因此所有在全局作用域中声明的变量、函数都会变成window对象的属性和方法。
差别
- 全局变量不能通过delete操作符删除
- 访问未声明的变量会抛出错误,但是通过查询window对象,可以知道某个可能未声明的变量是否存在
- 有些自执行函数里面的变量,想要外部也访问到的话,可用window.XX来做
var newValue = oldValue
//这里会抛出错误,因为oldValue未定义
var newValue = window.oldValue
//这里不会抛出错误,因为这是一次属性查询
//newValue的值是undefined
网友评论