0404 手打基础丸

110 阅读2分钟

手打基础丸 🧆 => 精选基础知识,经过多道工序精心制作而成,口感鲜嫩多汁。一口咬下,香气四溢,加上传统前端风味,令人回味无穷...... 助力食用者厚积薄发,夯实根基进阶上层。

今天也是JavaScript专题😀

JS中的包装类型?

包装类型允许原始值拥有对象的属性和方法,可以当作将原始值包装成一个对象以new的形式创建,例如:let str = new String()之后创建一个String包装对象。

包装之后str可以直接点出来对应的方法进行使用。

包装对象也可以用来进行显式强制类型转换,例如Number('123')得到123

JS提供了三个包装类型:

String 对应原始值string

Number对应原始值number

Boolean 对应原始值boolean

包装类型==原始类型返回true;===返回false;type of xx包装对象判定为object

JS进行隐式强制类型转换?

算术运算:数字+字符串=字符串;数字(-或*或/或其他运算符号)字符串=数字;

比较运算:==号的比较机制,会先进行类型转换;字符串和数字的大小比较会进行类型转换

逻辑运算:!、|| 、&&等运算符会将数字和字符串转化为布尔类型

JS中 + 操作符的运算规则?

拼接字符串:如果两个操作数中有一个是字符串时

数值加法:两个操作数都是数字或者一方为布尔(true=1,false=0)或null时

包装对象转换为原始值:操作数为对象

console.log([1,2] + [3,4]) //1,23,4
console.log({} + {}) //"[object Object][object Object]"

JS中为什么引入BigInt?

IEEE 754 双精度浮点数标准实现的JS数字类型在处理非常大的整数时会出现精度问题,为了处理和表示任意精度的整数,引入了BigInt,用于操作任意大小的整数而不丢失精度。

Object.assign 和对象扩展运算符(...object)区别?深拷贝or浅拷贝?

深拷贝:会复制整个对象树

浅拷贝:复制对象第一层属性,不会递归整个对象结构

区别:对象扩展运算符会创建一个新的对象,assign不会创建新对象复制结果返回给原对象