值类型和引用类型
值类型


常见的值类型:undefined、string、number、boolean、Symbol
引用类型


- 栈向下生长,堆向上生长。
常见的引用类型:对象、数组、null(特殊引用类型,指针指向空地址)、函数(特殊引用类型,但不用于存储数据,所有没有“拷贝、复制函数”)
手写JS深拷贝
typeof运算符
识别所有的值类型:undefined、string、number、boolean、Symbol
- 识别函数:function
-
深拷贝代码
/**** @param {Object} obj 要拷贝的对象* @returns*/function deepClone (obj = {}) {if (typeof obj !== 'object' || obj == null) {// 如果不是对象或者数组,直接返回值return obj}// 初始化返回结果let resultif (obj instanceof Array) {result = []} else {result = {}}// 遍历obj key是键名for (let key in obj) {// 保证key不是原型的属性if (obj.hasOwnProperty(key)) {// 递归调用 遇到对象或者数组会再深入一层result[key] = deepClone(obj[key])}}// 返回结果return result}
类型转换
字符串拼接
-
==运算符

-
if语句和逻辑运算
truly变量:!!a===true的变量
- falsely变量:!!a===false的变量

if语句和逻辑判断中判断的不是true和false,判断的是truly变量和falsely变量
相关面试题
typeof能判断哪些类型?
- 识别所有的值类型:undefined、string、number、boolean、Symbol
- 识别函数:function
- 判断是否是引用类型(不可再细分):object
- 何时使用 === 何时使用 ==
- 除了 ==null 以外,其他都一律使用 ===
- 值类型和引用类型的区别
- 手写深拷贝
- 注意判断值类型和引用类型
- 注意判断是数组还是对象
- 递归调用

