JavaScript 中如何判断数据类型

JavaScript的类型

JavaScript 是一门弱类型的编程语言,其一共有6中数据类型

1.Number 数值类型
2.String 字符串类型
3.Boolean 布尔类型
4.undefined 未定义类型
5.null 空值
6.object 对象类型

在JavaScript 中的比较操作

在JavaScript中存在两种比较操作分别是 =====
两个的区别在于 ===不会做默认的类型转换,会比较两个值的类型是否一致,当然对于object类型的值=====是一样的,两者都是比较object类型的引用是否为同一个对象 (Array也是obejct类型)

References : Stack Overflow 回答

如何判断JavaScript的数据类型

JavaScript 提供了typeof 函数来返回数据类型,但是typeof操作符的返回值有时候是不准确的.
例如 typeof new Number(1) # object

针对上面的情况,我们可以使用toString()函数来返回数据的真正对象

var mytypeof = function (o) {
  var s = Object.prototype.toString.call(o);
  return s.match(/\[object (.*?)\]/)[1].toLowerCase();
}
mytypeof({}); // "object"
mytypeof([]); // "array"
mytypeof(5); // "number"
mytypeof(null); // "null"
mytypeof(); // "undefined"
mytypeof(/abcd/); // "regex"
mytypeof(new Date()); // "date"

但是JavaScript中还有两个比较特殊的类型 NaN, Array,针对这两个类型我们可以使用isNaNArray.isArray来检测其类型

PS:typeof 操作符一般可以用来判断某个值或函数是否存在

JavaScript 是面向对象的编程语言,JavaScript是通过原型链做继承的,当我们想要检测自定义的对象,或者对象的继承关系的时候.
这个时候应该使用instanceof操作符(instanceof 只能用于检测object类型的值).这个函数是通过构造函数的prototype来检测对象的类型的

function Super(age){

this.name = "lsh";

this.age = age;

}

Super.prototype.sayName = function (){

console.log(this.name);

}

function Sub(){

Super.call(this,99);

}

Sub.prototype = new Super;

Sub.prototype.constructor = Sub;

Sub.prototype.hello = function (){

console.log(this.age);

}

var s = new Super();

var n = new Sub();


console.log(n instanceof Sub);

console.log(n instanceof Super);

你可能感兴趣的:(JavaScript 中如何判断数据类型)