关于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?求大神解答

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

其他方式没怎么深究.

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

     var t;
    console.log(typeof t);   //undefined
    console.log(typeof (typeof t));   //string
        第四个返回的是字符串,跟undefined比较所以是false;

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

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