JavaScript数据类型、判断、检测

发布时间:2024年01月12日
JavaScript数据类型

number、string、boolean、null、undefined、symbol、bigint
Object【Array、RegExp、Date、Math、Function】
存储方式

1. 基础类型存储在栈内存中,被引用或者拷贝时,会创建一个完全相同的变量。

2. 引用类型存放在堆内存中;存储的是地址,多个引用指向同一个地址

检测

1. typeof

2. instanceof

// 自我实现instanceof方法
function myinstanceof(obj, target) {
    if (typeof target !== 'function') {
      // 抛出异常,终止后面代码执行
      throw new Error('target 不是一个函数')
    }
    const type = typeof obj
    if (obj === null || type !== 'object') {
      return false
    }
    let proto = Object.getPrototypeOf(obj)
    const targetProto = target.prototype
    while (true) {
      if (proto === null) return false
      if (proto === targetProto) return true
      proto = Object.getPrototypeOf(proto)
    }
  }

instanceof可以准确的判断复杂引用数据类型,但是不能正确判断基础数据类型;

typeof可以判断基础数据类型(null除外),引用数据类型,除了function,其他也无法判断。

3. Object.prototype.toString.call()

function getType(args) {
    // 如果是基础数据类型,直接返回
    const type = typeof args
    if (type !== 'object') {
      return type
    }
    return Object.prototype.toString.call(args).replace(/^\[object (\S+)\]$/, '$1')
  }
数据类型转换

1. 强制类型转换

Number() String() Boolean()

parseInt()  parseFloat()

toString()
Number()方法的强制转换规则
Number转换布尔值;true转换为1,false转换为0
Number转换数字;返回自身
Number转换null;返回0
Number转换undefined;返回NaN
Number转换字符串;
    1. 如果字符串中只有数字人,则将其转换为十进制
    2. 如果字符串中包含浮点数,将其转换为浮点数值
    3. 如果是空字符串,将其转换为0
    4. 如果不是以上格式的字符串,均返回NaN

Symbol 抛出错误

除了undefined、null、false、''、0、NaN 转换出来都是false,其他都是true

2. 隐式类型转换

逻辑运算符:&&、||、!

运算符:+-*/

关系操作符:>、<、>=、<=

相等运算符:==

if/while条件

?

文章来源:https://blog.csdn.net/qq_39579242/article/details/135529973
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。