关于js的typeof的疑惑

在js中定义一个未赋值的变量用typeof检测

var t; console.log(t); console.log(typeof t); console.log(t == undefined); console.log(typeof t == undefined);

浏览器控制台显示如下:undefined
undefined
true
false
第一个和第二个返回的值都一样,为什么第三个返回true,而第四个返回false?求大神解答

6个回答

第一个和第二个返回那个是正常的,
不过我一般的方式是:typeof(xx)=="undefined".

其他方式没怎么深究.

u013409186
路行- 回复路行-:不过用xx===undefined,如果xx未定义,会报错,用typeof 就不会
2 年多之前 回复
u013409186
路行- 可以用xx===undefined,==不行,应为==认为undefined等于null
2 年多之前 回复
u013409186
路行- 好像也可以用xx==undefined,不太确定两者的区别
2 年多之前 回复

你要理解typeof的作用,你第二个typeof t 返回的是字符串undefined,你第四个比较的,相当于字符串 undefined 和 undefined数据类型,
肯定是false啦。你可以把第四句改成 console.log(typeof t === 'undefined'); 来检验一下。===是全等,包括数据类型的检验。你会发现打印出来的是true。
希望可以帮到你。

u013409186
路行- 恩恩,谢谢,确实帮到了
2 年多之前 回复
     var t;
    console.log(typeof t);   //undefined
    console.log(typeof (typeof t));   //string
        第四个返回的是字符串,跟undefined比较所以是false;
u013409186
路行- 谢谢了,确实是的
2 年多之前 回复

你的去看看JavaScript基本类型; 第一个值是 undefined这个是值,,第二个判断类型的到的是undefined类型;他们不是同一个东西;就和 null值和Null类型一样并不相等的;
浏览器的console上虽然输出的都是小写的undefined但是他们颜色不一样你仔细看下;

u013409186
路行- 刚写错了,t==undefined一个是类型,一个是值
2 年多之前 回复
u013409186
路行- 你好,继续请教一个问题,为什么第三个t==undefined为ture呢,一个是类型,一个是变量,比如定义一个f=function ab(){},然后f==Function就放回false
2 年多之前 回复
u013409186
路行- 谢谢了,透彻了,console上的颜色确实不一样
2 年多之前 回复
u013409186
路行- 谢谢了,透彻了,console、
2 年多之前 回复

只因为typeof返回一个表示数据类型的字符串

我大概看了一下评论,感觉有人说的不对啊,会误导人的。
第一个输出的undefined表示一个未声明的变量,或已声明但没有赋值的变量。
第二个undefined是typeof函数的返回值,他返回的是一个字符串。实际应为“undefined”
这也就解释了第三个输出的true,t并未赋值所以他等于undefined(注意不是“undefined”)。
至于第四个false ,typeof(t)他返回的是字符串"undefined"而不是类型undefined,所以他不等于undefined,
如果换成typeof(t)=“undefined”,就会得到true。

u013409186
路行- 谢谢了,理解了
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问