[面试仓库]JS基础知识汇总-数据类型篇
一,值类型和引用类型
值类型存储的是值,引用类型存储的是地址(指针)
常见的值类型
- undefined
- string
- number
- boolean
- Symbol
常见的引用类型
- object
- array
- function(特殊的引用类型)
- null(特殊的引用类型,指向空地址)
二,typeof 的功能
- 能够识别所有的值类型
- 能够识别函数
- 判断是否为引用类型(但不能做更深层次的判断)
三,手写深拷贝函数
function deepClone(obj) {
//判断是否为引用类型
if (typeof obj !== "object" || obj == null) {
return obj;
}
//判断是数组还是对象
let res;
if (obj instanceof Array) {
res = [];
} else {
res = {};
}
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
//必须保证都是obj的属性,不是原型的属性
res[key] = deepClone(obj[key]);
}
}
return res;
}
四,=== 和 == 的使用场景
除了==null,其余的都用===
因为 == null 相当于=== null || === undefined
另外,我们引入两个新的概念truly变量,falsely变量:
truly变量指的是!!a===true的变量falsely变量指的是!!a===false的变量
除了 0、NaN、""(空字符串)、null、undefined、false,其余的全是 truly 变量
我们来看两种运算
console.log(10 && 0); //0
console.log("" || "abc"); //'abc'
对于与运算,结果总是返回falsely变量;对于或运算,返回的总是truly变量
其他有关数据类型的问题,我会在此做出补充。

浙公网安备 33010602011771号