学习笔记-数据类型

127 阅读2分钟

根据(juejin.cn/post/701764…) 学习,并记录本笔记

js核心知识点

数据类型

原始类型(基本数据类型)

Boolean、null、undefined、Number、String、Symbol(ES6)、BigInt(ES6)

原始数据存储的都是值,是没有函数可以调用的
undefined.toString() 会报错
BigInt

解决使用Number类型的限制:Number只能显示-(2^53-1)和9007199254740991(2^53-1)的数,大于(2^53-1)的都会失去精度

js提供Number.MIN_SAFE_INTEGERNumber.MAX_SAFE_INTEGER来表达最小安全整数和最大安全整数

创建BigInt,只需要在数值末尾加个n即可
> 9007199254740993n  => 9007199254740993
> 9007199254740994   => 9007199254740994
BigInt也可以使用2,8,16进制的数表示
> 0b100000000000000000000000000000000000000000000000000011n => 9007199254740995n

不能使用“===”将BigInt和常规数字相比较,因为类型不同

BigInt也可使用算术运算符
除了一元加号(+)
+10n  => //报错

20n+10n  => 30n
25n/10n  => 2n  自动向下舍入到最接近的整数 

隐式类型转换

image.png

三大引用类型

Object

创建Object实例

  1. new Object()
  2. {}
Array

创建Array对象

  1. new Array()
  2. []
Function

每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法

类型判断

typeof

typeof不能识别null,不能识别引用类型

会将null,Array,Object均识别为“Object”

但能识别function

instanceof

不能识别基本数据类型,但是可以检测出 引用数据类型 一般用来检测对象类型,以及继承关系

instanceof 检测的是原型

instanceof(A,B){
    var L=A.__proto__
    var R=B.prototype
    if(L==R){
        return true
    }
    return false
}

当 A 的 __proto__ 指向 B 的 prototype 时,就认为 A 就是 B 的实例

__proto__和prototype和constructor的理解

拓展:

  • __proto__是对象所独有的,prototype是函数所独有的;
  • 函数实际上也是一个对象,所以函数既有prototype也有__proto__
  • proto:指向自己的原型对象,是构成原型链的关键
  • prototype:存放共享属性和共享方法,本质是为了节约资源
constructor

指向构造函数 null、undefined无constructor方法,因此constructor不能判断null和undefined

Object.prototype.toString.call

是一种相对全面的js判断类型方法

类型转换

字符串转换

将一个值变成字符串类型 String()

数字型转换

将值变成数字 Number()

undefinedNaN
null0
布尔型转换

直观上为空的转换为false

其余为true

Boolean(0) => false
Boolean("0") => true
Boolean("") => false
Boolean(" ") => true