首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js判断类型的方法

在JavaScript中,判断变量的类型是非常重要的,因为JavaScript是一种弱类型语言,变量的类型可以在运行时改变。以下是一些常用的判断类型的方法:

1. typeof 操作符

typeof 是最常用的判断基本数据类型的方法。

代码语言:txt
复制
console.log(typeof 42); // "number"
console.log(typeof 'Hello World'); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object"(这是一个历史遗留问题)
console.log(typeof {}); // "object"
console.log(typeof []); // "object"
console.log(typeof function() {}); // "function"

2. instanceof 操作符

instanceof 用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。

代码语言:txt
复制
console.log([] instanceof Array); // true
console.log({} instanceof Object); // true
console.log('Hello' instanceof String); // false(基本类型不是实例)
console.log(new String('Hello') instanceof String); // true(包装对象是实例)

3. Object.prototype.toString 方法

这种方法可以准确地判断各种类型,包括内置对象和自定义对象。

代码语言:txt
复制
console.log(Object.prototype.toString.call(42) === '[object Number]'); // true
console.log(Object.prototype.toString.call('Hello World') === '[object String]'); // true
console.log(Object.prototype.toString.call(true) === '[object Boolean]'); // true
console.log(Object.prototype.toString.call(undefined) === '[object Undefined]'); // true
console.log(Object.prototype.toString.call(null) === '[object Null]'); // true
console.log(Object.prototype.toString.call({}) === '[object Object]'); // true
console.log(Object.prototype.toString.call([]) === '[object Array]'); // true
console.log(Object.prototype.toString.call(function() {}) === '[object Function]'); // true

4. Array.isArray 方法

专门用于判断一个变量是否为数组。

代码语言:txt
复制
console.log(Array.isArray([])); // true
console.log(Array.isArray({})); // false

5. 自定义类型判断函数

有时候需要更复杂的类型判断,可以自定义一些函数。

代码语言:txt
复制
function isString(value) {
    return typeof value === 'string' || value instanceof String;
}

function isNumber(value) {
    return typeof value === 'number' && !isNaN(value);
}

console.log(isString('Hello')); // true
console.log(isNumber(42)); // true

应用场景

  • 数据验证:在处理用户输入或外部数据时,确保数据的类型正确。
  • 逻辑分支:根据不同的数据类型执行不同的逻辑。
  • 调试:在调试代码时,快速确定变量的类型。

注意事项

  • typeof null 返回 "object",这是一个已知的历史遗留问题。
  • instanceof 在跨iframe或窗口的情况下可能会失效,因为每个iframe或窗口都有自己的全局对象和原型链。

通过这些方法,你可以准确地判断JavaScript中变量的类型,并根据需要进行相应的处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JS判断数据类型的方法有哪些_c语言数据类型

1、typeof 类型判断 缺点:无法区分null 、对象、数组,Map,Set,WeakMap,WeakSet、RegExp等 注意:通过构造函数创建的变量typeof 后是都是object var...缺点: 1、只能判断通过构造函数创建的变量,字面量创建的变量无法判断 2、只能区分对象是否存在目标对象的原型链上 var a = '' console.log(a instanceof...缺点: 1、不能判断null和undefined 2、构造函数的指向是可以改变的,因此会存在类型判断不准确 var a = '' console.log(a.constructor)...a.constructor.name) // WeakMap a = new WeakSet() console.log(a.constructor.name) // WeakSet 4、toString方法判断...优点:能够校验所有的数据类型 缺点:不能判断谁是谁的实例 var toString = Object.prototype.toString var a = null console.log(toString.call

2K40
  • JavaScript 类型判断方法

    console.log(typeof {message: 'hello'}); // object 从上面结果可以看到数组、JSON对象、null以及内置函数(new Date())通过 typeof 判断后返回的结果均为...2. instanceof运算符方法 使用instanceof运算符,它可以用来判断一个对象在其原型链上是否存在一个 prototype 属性。...这里封装了一个方法,可以判断一个数据是数组还是对象。...Object.prototype.toString.call(function () {}) // [object Function] Object.prototype.toString.call({}) // [object Object] 这种方式精确的输出了目标的类型...,因此可以通过判断Object.prototype.toString.call(target)与[object ${type}]是否相等来确定目标类型,封装一个比较通用的方法,就可以判断各种类型了: var

    97200

    JS的数据类型判断方法栈与堆深浅拷贝

    ,是无法检测到最初的类型 function Fn(){}; //原来是方法 Fn.prototype=new Array(); //改变原型为数组 var f=new Fn(); console.log...null Array检测方式:Array.isArray([...]) 5)万金油方法:Object.prototype.toString.call() 能检测所有类型,返回 "[object type...为了切断引用类型a和b的联系,所以我们需要浅/深拷贝, 浅拷贝:一层拷贝 深拷贝:无限层拷贝 2、两大类:数组/对象 数组的浅拷贝:数组里的引用类型都是浅拷贝的 /** 数组的浅拷贝 **/...对象序列化(JSON字符串),再使用JSON.parse来反序列化(还原)js对象 缺点:缺点就是无法拷贝 undefined、function、symbol 这类特殊的属性值,拷贝完变成null 参考...:JS专题之深浅拷贝、 深拷贝的终极探索

    1.4K50

    JS数据类型判断方式总结

    ()-简单介绍 Object.prototype.toString.call()-代码示例 总结 写在前面 今天写一篇关于js数据类型校验的方法总结,js的数据类型校验一直是一个很基础的问题,但是很多人都搞的稀里糊涂的...,面试的时候基本上也是多会问的,所以今天将js中数据类型的判断方法总结一下,具体项目开发过程中使用哪种可以根据实际情况进行处理!...相关/js数据类型判断.js */ 方式汇总 typeof instanceof constructor Object.prototype.toString.call() typeof-简单介绍...object Number] console.log(Object.prototype.toString.call(new Date())) //[object Date] 总结 以上就是我们经常使用的一些判断数据类型的方法...,其实在日常的开发过程中我们使用的比较多的一个就是typeof的方法,虽然它不可以对复杂数据类型进行检测,但是基本数据类型还是可以的,所以一般是根据实际情况进行使用和组合使用的,而不是一味的使用最后一种看起来比较全面的方式

    1.7K40

    关于JS那些事:数据类型判断方法的几种方法和判断是不是空数组或对象

    在我们日常写代码的时候会有要判断数组或者对象类型的时候。 而JS也给了我们很多判断类型的方法,但还是有很多特殊情况导致我们的判断失误。...如下: typeof 运算符 //typeof 运算符返回变量或表达式的类型 console.log(typeof 123) //'number' 这也是我们经常会用到的一个判断类型的方法 可是由于个别类型的特殊性导致我们的判断出现失误...(2) instanceof 这是一个万能方法,基本上的类型都能检测 用法: console.log(cars instanceof Array) 如果是数组返回true否则返回false (小thips...这个方法的返回结果是false才是数字,因为NaN的意思是不是一个数字,也就是非数字,所以跟正常的方法是反过来的,正常的是如果是数字就返回true,它这个判断是意思是 是不是一个非数字。...(2).typeof 用法: var var a = 1 console.log(a) //'number' 基本数据的判断方法这几种也够用了,再细一点就是浮点,小数,整数判断啥的了。

    1.7K30

    JS数据类型分类和判断 转

    typeof可以对基本类型number、string  、boolean、undefined做出准确的判断(null除外,typeof null===“object”,这是由于历史的原因,我就不巴拉巴拉了...,该方法默认返回其调用者的具体类型,更严格的讲,是 toString运行时this指向的对象类型, 返回的类型格式为[object,xxx],xxx是具体的数据类型,其中包括:String,Number...基本上所有对象的类型都可以通过这个方法获取到。...JS变量查找规则,其他对象应该也可以直接访问到Object的toString方法,而事实上,大部分的对象都实现了自身的toString方法,这样就可能会导致Object的toString被终止查找,因此要用...三、总结: typeof可以准确地判断出基本类型,但是对于引用类型除function之外返回的都是object; 已知是引用类型的情况可以选用instanceof或constructor方法进行具体类型的判断

    3.2K20

    js 准确判断数据类型(终极方案)

    前言 要判断JavaScript中的数据类型,首先得弄懂JavaScript中有哪些数据类型。...然后还要知道在 JavaScript 中可以判断数据类型的有typeof 、instanceof 这些,并且知道其不足,最终通过自己封装的方法来终极解决。...JavaScript中的数据类型有哪些 我把 js 中的数据类型大致分为基本数据类型(原始值)、引用类型这两种。...null的时候会返回 object ,这个是js这个语言设计的缺陷 console.log(typeof null) // object typeof 缺点是不能正确的判断 null 类型 instanceof...最后我们通过正则获取到 xx ,因为类型的字符串是小写字母,通过 tolowerCase 转换成小写。这些就能完美解决 typeof 判断数据类型的缺陷了。

    18010
    领券