use*_*065 4 javascript global-variables
为什么这个:
if(x)
alert('Available');
Run Code Online (Sandbox Code Playgroud)
得到: ReferenceError: x is not defined
虽然这有效:
if(window.x)
alert('Available');
Run Code Online (Sandbox Code Playgroud)
不是说:
var x = "";
Run Code Online (Sandbox Code Playgroud)
相当于:
x = "";
Run Code Online (Sandbox Code Playgroud)
相当于:
window.x = "";
Run Code Online (Sandbox Code Playgroud)
只要在一个函数外面,整个代码被一个包围着with(window)?
为了更清楚:我知道VS成员变量全球性的区别,但我想知道为什么检索未声明的变量提供类似的ReferenceError x;同时window.x给出了不确定的?他们不应该给undefined?
之所以window.x"工程"(但不应该满足的if条件),是因为访问对象的不存在的属性时,则返回undefined,而不是例外.直接访问变量的情况恰恰相反.这很可能是因为如果在定义变量之前访问变量,则程序可能存在不应忽视的错误.
另外,var定义一个只能在封闭范围内访问的变量.省略关键字会导致创建全局变量.
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |