当前位置:首页 > JavaScript

js实现类型

2026-01-31 16:47:55JavaScript

JavaScript 类型判断方法

JavaScript 提供了多种方式来判断变量的类型,以下是常见的几种方法:

typeof 操作符

typeof 'hello' // 'string'
typeof 42 // 'number'
typeof true // 'boolean'
typeof undefined // 'undefined'
typeof null // 'object' (历史遗留问题)
typeof function() {} // 'function'
typeof [] // 'object'
typeof {} // 'object'

instanceof 操作符 用于检测构造函数的 prototype 属性是否出现在对象的原型链中:

[] instanceof Array // true
new Date() instanceof Date // true
{} instanceof Object // true

Object.prototype.toString.call() 更精确的类型判断方法:

Object.prototype.toString.call('hello') // '[object String]'
Object.prototype.toString.call(42) // '[object Number]'
Object.prototype.toString.call(true) // '[object Boolean]'
Object.prototype.toString.call(null) // '[object Null]'
Object.prototype.toString.call(undefined) // '[object Undefined]'
Object.prototype.toString.call([]) // '[object Array]'
Object.prototype.toString.call({}) // '[object Object]'
Object.prototype.toString.call(function() {}) // '[object Function]'

Array.isArray() 专门用于判断数组类型:

Array.isArray([]) // true
Array.isArray({}) // false

自定义类型判断函数 可以封装一个通用的类型判断函数:

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

getType('hello') // 'string'
getType([]) // 'array'
getType(null) // 'null'

类型转换方法

显式类型转换

Number('123') // 123
String(123) // '123'
Boolean(1) // true

隐式类型转换

'5' + 1 // '51' (字符串拼接)
'5' - 1 // 4 (数字运算)
'5' * '2' // 10
!0 // true

特殊类型检查

检查 NaN

isNaN(NaN) // true
isNaN('hello') // true
Number.isNaN(NaN) // true (ES6更精确的方法)
Number.isNaN('hello') // false

检查有限数字

isFinite(Infinity) // false
isFinite(42) // true
Number.isFinite(42) // true (ES6方法)

检查整数

js实现类型

Number.isInteger(42) // true
Number.isInteger(42.0) // true
Number.isInteger(42.1) // false

这些方法组合使用可以覆盖JavaScript中大部分类型判断和转换的需求。根据具体场景选择合适的方法,特别是要注意typeof null返回'object'这种特殊情况。

标签: 类型js
分享给朋友:

相关文章

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 c…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…

实现继承js

实现继承js

实现继承的方式 在JavaScript中,实现继承可以通过多种方式完成,每种方式都有其优缺点。以下是几种常见的实现继承的方法: 原型链继承 原型链继承是最基本的继承方式,通过将子类的原型指向父类的实…