js校验数据类型

js校验数据类型

js校验数据类型常用的3种方式,typeof运算符、constructor属性和 Object.prototype.toString

  1. typeof 运算符返回变量或表达式的类型

原始数据值是一种没有额外属性和方法的单一简单数据值。typeof 运算符可返回以下原始类型之一:string,number,boolean,undefined。
复杂数据,typeof 运算符可返回以下两种类型之一:function, object。typeof 运算符把对象、数组或 null 返回 object,不会把函数返回 object。


console.log(typeof 1);  // number
console.log(typeof "string"); // string
console.log(typeof false);  // boolean
console.log(typeof NaN);  // number
console.log(typeof undefined); // undefined
console.log(typeof null);  // object
console.log(typeof new Object());  // object
console.log(typeof new Array());  // object
console.log(typeof [1,2]); // object
console.log(typeof function(){});  // function
console.log(typeof new Date());  // object

  1. constructor 属性返回所有 JavaScript 变量的构造器函数。

可以区分数组,对象,Date, 函数。但是null,undefined会报错。


console.log("Bill".constructor );   // 返回  [Function: String]     
console.log((3.14).constructor );   // 返回  [Function: Number]
console.log(false.constructor );    // 返回 [Function: Boolean]
console.log([1,2,3,4].constructor );  // 返回 [Function: Array]
console.log({name:'Bill', age:62}.constructor );  // 返回[Function: Object]
console.log(new Date().constructor );    // 返回 [Function: Date]
console.log(function () {}.constructor ); // 返回 [Function: Function]

console.log(null.constructor ); // 报错
console.log(undefined.constructor ); // 报错

  1. Object.prototype.toString 方法返回一个表示该对象的字符串

JavaScript 调用 toString 方法将对象转换为一个原始值。

const getType = (obj) => {
  /*
     [object Number]  [object Undefined], toString方法返回的字符串如上所示,故取8到倒数第一个字符
  */

  return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
}

// 使用

console.log(getType(1));  // number
console.log(getType(() => { }))  // function
console.log(getType(undefined))  // undefinde
console.log(getType(null))   // null
console.log(getType('1234'))  // string
console.log(getType(false))  // boolean
console.log(getType(new Date()))  // date
console.log(getType(NaN))  // number
console.log(getType(new Array))  // array

以上是3种判断数据类型的方式,可以根据需要使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值