上海启嘟渡科技商贸有限公司
SEARCH

与我们合作

我们专注提供互联网一站式服务,助力企业品牌宣传多平台多途径导流量。
主营业务:网站建设、移动端微信小程序开发、营销推广、基础网络、品牌形象策划等

您也可通过下列途径与我们取得联系:

微 信: wxyunyingzhe

手 机: 15624122141

邮 箱:

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

更新时间:2025-01-11 07:50:29

因为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根本不存在,所以就会导致运行期错误

多重随机标签

猜你喜欢文章

QQ客服 电话咨询