typeof运算符(JS)
typeof运算符的作用:
传入一个变量或者值, 会检测出对应的变量或者值的数据类型
typeof运算符测试:
- 测试number类型
var num = 1;
var num2 = 1.2;
var num3 = NaN;
//输出到页面上
document.write(num + "--->" + typeof(num) + "<br>");
document.write(num2 + "--->" + typeof(num2) + "<br>");
document.write(num3 + "--->" + typeof(num3) + "<br>");
- 测试string类型
var str = "abc";
var str2 = 'edf';
document.write(str + "--->" + typeof(str) + "<br/>");
document.write(str2 + "--->" + typeof(str2) + "<br/>");
- 测试boolean类型
var flag = true;
document.write(flag + "--->" + typeof(flag) + "<br />");
- 测试null类型
var obj = null;
document.write(obj + "--->" + typeof(obj) + "<br />");
- 此时要注意: 我们测试这个null类型的时候输出的结果会是一个Object类型, 这个时候就会有一些问题, 这个时候和我们前面讲过的就会有一些出入, 我们不是前面讲的时候说null是一个基本数据类型? 为什么这个时候检测出来的数据类型是一个Object类型? 前面我们学习了JS中五种基本数据类型, 而null就是其中的一个类型, 这个时候我们使用typeof运算符检测出来之后却显示我们的null是一个Object类型的(也就是是一个引用类型的), 此时究竟是为什么?
- 这实际上是JavaScript中一个历史遗留问题: 是Javascript最初实现中的一个错误, 然后ECMAScript沿用了这个错误, 一直到现在null被认为是对象的占位符, 从而就解析了这一矛盾, 但是从技术上来讲, 它仍然是一个原始值(基本数据类型值)
- 测试undefined类型
var obj2 = undefined;
var obj3;
document.write(obj2 + "--->" + typeof(obj2) + "<br />");
document.write(obj3 + "--->" + typeof(obj3) + "<br />");