前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript中的类型转换、判断类型相关知识

JavaScript中的类型转换、判断类型相关知识

原创
作者头像
用户10562852
发布2023-06-09 11:21:43
3450
发布2023-06-09 11:21:43
举报
文章被收录于专栏:前端不难前端不难

基本数据类型:String、Number、Boolean、Null、Undefined、Symbol、BigInt

引用数据类型:Object【Object是个大类,function函数、array数组、date日期...等都归属于Object】

不同的类型之间运算需要先对数据的类型进行转换,这里就包括隐式类型转换和强制类型转换

隐式类型转换

通常在一些数学运算中,比如:+ - * / > < == 这些运算会发生隐式转换,除了 + 其他都会转换成数值型。

关于 +

当字符串 +上任意值时,就会按照字符串的拼接去计算

代码语言:javascript
复制
console.log('12' + 1) // 121
console.log('12' + true) // 12true
console.log('12' + null) // 12null
console.log('12' + undefined) // 12undefined

当Boolean、null这些类型的值会被转换为数值0、1

代码语言:javascript
复制
console.log(null + 1) // 1
console.log(true + 1) // 2
console.log(false + 1) // 1

当 + 为一元操作符的时候

代码语言:javascript
复制
console.log(+1) // 1
console.log(+true) // 1
console.log(+false) // 0
console.log(+null) // 0
console.log(+"1") // 1

当作为对象的键名

会被隐式转换成字符串

强制类型转换

parseInt()

parseInt函数将其第一个参数转换为一个字符串,对该字符串进行解析,然后返回一个整数或 NaN

代码语言:javascript
复制
console.log(parseInt('')) // NaN
console.log(parseInt('123ab')) // 123
console.log(parseInt('ab123')) // NaN
console.log(parseInt('123.93aa')) // 123

parseFloat()

如果 parseFloat 在解析过程中遇到了正号(+)、负号(-)、数字(0-9)、小数点(.)、或者科学记数法中的指数(e 或 E)以外的字符,则它会忽略该字符以及之后的所有字符,返回当前已经解析到的浮点数。

代码语言:javascript
复制
console.log(parseFloat('')) // NaN
console.log(parseFloat('123.33ab')) // 123.33
console.log(parseFloat('ab123')) // NaN
console.log(parseFloat('123')) // 123
console.log(parseFloat('+1')) // 1
console.log(parseFloat('-1')) // -1
console.log(parseFloat('12+1')) // 12
console.log(parseFloat('12-1')) // 12
console.log(parseFloat('.1')) // 0.1

Number()

当 Number 作为普通函数调用时,它将参数强制转换为数值原始值。BigInt 被转换为数值。如果值不能转换,则返回 NaN。只要参数带有无效字符就会被转换为 NaN 。

代码语言:javascript
复制
console.log(Number('')) // 0
console.log(Number('123ab')) // NaN
console.log(Number('ab123')) // NaN
console.log(Number('123.93aa')) // NaN

Number 与上面两个方法最大的不同点是:

1、parseInt 和 parseFloat 可以将以数字开头的字符串转换为数值

2、Number 可以将空字符串转换为 0

判断变量类型的方法

typeof

typeof 判断结果有:"undefined" "boolean" "number" "bigint" "string" "symbol" "function" "object"

NaN会被判断为"number",null也会被判断为 "object",所以我们可以用 object.is() 来进一步判断

代码语言:javascript
复制
console.log(typeof NaN) // number
console.log(typeof null) // object

instanceof

instanceof 运算符用于检测构造函数(第二个元素)的 prototype 属性是否出现在某个实例对象(第一个元素)的原型链上。返回一个布尔值。

代码语言:javascript
复制
let str = new String('sss')
let num = new Number()
console.log(num instanceof Number) // true
console.log(num instanceof Object) // true
console.log(str instanceof String) // true

Object.prototype.toString.call()

最精确的判断变量类型的方式

代码语言:javascript
复制
console.log(Object.prototype.toString.call('sss')) // [object String]
console.log(Object.prototype.toString.call(11)) // [object Number]
console.log(Object.prototype.toString.call(true)) // [object Boolean]
console.log(Object.prototype.toString.call(undefined)) // [object Undefined]
console.log(Object.prototype.toString.call(null)) // [object Null]
console.log(Object.prototype.toString.call(NaN)) // [object Number]
console.log(Object.prototype.toString.call(() => {})) // [object Function]
console.log(Object.prototype.toString.call([])) // [object Array]
console.log(Object.prototype.toString.call({})) // [object Object]

Array.isArray

用来判断该变量是否是一个数组,返回 Boolean

代码语言:javascript
复制
console.log(Array.isArray({'0': 'a', '1': 'b'}))
console.log(Array.isArray([]))

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 隐式类型转换
    • 关于 +
      • 当字符串 +上任意值时,就会按照字符串的拼接去计算
      • 当Boolean、null这些类型的值会被转换为数值0、1
      • 当 + 为一元操作符的时候
      • 当作为对象的键名
      • parseInt()
      • parseFloat()
      • Number()
  • 强制类型转换
  • 判断变量类型的方法
    • typeof
      • instanceof
        • Object.prototype.toString.call()
          • Array.isArray
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档