JS中的堆栈内存及函数底层处理机制(1)

一直想从底层好好学 JS,这次终于下定决心,坚持学习,并和大家分享我的笔记,希望能一起学习。

JS中的数据类型

JS 数据类型共有 7 种基本数据类型, 2 种引用数据类型

  • 基本数据类型(值类型,原始类型)
    • number
      • NaN
      • Infinity
    • string
    • boolean
    • null
    • undefined
    • symbol
      • static Symbol
      • Symbol.prototype
    • bigint
  • 引用数据类型
    • object
      • 普通对象
      • 数组对象
      • 正则对象
      • 日期对象
      • JSON对象
      • Set
      • Map
    • function
      • 普通函数
      • 构造函数
      • 箭头函数
      • 生成器函数
ECMAScript 并没有规定 function 属于一种引用类型,但 function 的二进制码与 object 并不相同,所以在此也把 function 列为一种数据类型。

NaN

  1. NaN 和任何数据都不相等
NaN === NaN // false
  1. 检测有效数字用isNaN()

Symbol

  1. 创造 Symbol() 是唯一值
console.log(Symbol() === Symbol()) // false

let symb = Symbol()
console.log(symb === symb) // true
  1. 可以用来给对象唯一的属性
  2. 在 vuex/redux 中做行为派发,统一管理派发的行为标志

bigint

Number.MAX_SAFE_INTEGER //9007199254740991
Number.MIN_SAFE_INTEGER //-9007199254740991

//在数字后加 n 为 bigint
9007199254740991n + 1n // 9007199254740992n
typeof 9007199254740992n // bigint

typeof 检测数据类型局限性

  1. 检测 null 不准确
typeof null // 输出为 "object"
  1. 不能细分对象
typeof {} // 输出为 "object"
typeof [] // 输出为 "object"
typeof /^$/ // 输出为 "object"

typeof 的原理:检测二进制的值,所有对象都是以 000 开始的,无法细分对象。null -> 000000,所以 typeof nullobject

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值