在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。