手打基础丸 🧆 => 精选基础知识,经过多道工序精心制作而成,口感鲜嫩多汁。一口咬下,香气四溢,加上传统前端风味,令人回味无穷...... 助力食用者厚积薄发,夯实根基进阶上层。
今天也是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不会创建新对象复制结果返回给原对象