在网页里面的写javascript的疑问: alert(name)会弹出对话框,内容为空 alert(age)时没反应

name和age都没有声明,谁能给个合理的解释,谢谢
alert(name)和alert(age)是独个测试的,这里放一起说是比较他们独自运行后结果不一样,alert(name)会弹出窗口,根本没报错

因为window.name是空字符串,window.age是undefined,所以你alert(age)会报错,alert(name)会出对话框

你需要弄明白三个概念:
1:什么是undefined?javascript的undefined其实有两个概念,一种就是报错的时候说某个变量undefined,这个时候它是形容词,说某个变量没定义,还有一种就是javascript的一个顶级对象,他就是一个object,跟字符串,数字一样,这个时候它是名词

2:alert什么时候会报错呢?并不是你传递一个参数等于undefined(名词)它就报错,而是你传给它一个undefined(形容词)参数它才报错,比如下面两种情况都不会报错:
alert(undefined);
var a = undefined;alert(a);
在这两句中其实undefined都是通过一个声明过的变量作为一个代表传递个alert的,第一句是隐藏变量,你不知道它的名字,是机器替你创建的,第二句就是a变量,alert首先找到变量,然后变量指向undefined对象,不会打乱javascript运行机制,所以把可以把undefined打印出来
但是如果你从来没声明过一个变量,比如直接写个alert(age);而age这个变量从来没出现过,它也不是当前运行域中的默认变量,alert处理age的时候就看不懂它,更不会通过它找到undefined对象

3:javascript的变量都是在自己的scope内才有效,最外层的scope就是window,你平时看到的全局变量其实全都是寄存在window对象下面,alert(name)其实调用的是alert(window.name),它不会报错是因为window有name成员,只不过它是个空字符串而已,而age不同,window.age根本不存在,所以就会导致运行期错误
温馨提示:内容为网友见解,仅供参考
第1个回答  2017-10-15
name是window上的一个属性, 所以即使你没声明使用它也不会报错.
这个属性表示该window所在窗口的名称, 默认为空字符串.
第2个回答  2011-05-12
alert(name)会弹出对话框,内容为空 估计是name 是空指针
至于你说的age。。我不知道 你尽量用debug跑一下
第3个回答  2011-05-13
name应该是找到一个属性上去了.
age没申明是空指针,会报错的,看浏览器有个右下脚黄色三角感叹号.
第4个回答  2011-05-12
还有哦,alert(true) 跟alert(false),alert(unll)也可以也可以弹出东东来哦! 刚测试了一下,发现alert()也有窗口弹出来!
相似回答