js面试题-变量类型和计算
值类型和引用类型
值类型
undefined、String、Number、Boolean 、Symbol
引用类型
null、object、function
null为特殊引用类型,指针指向为空地址
function为特殊引用类型,但不用于存储数据,所以没有“拷贝、复制函数”这一说
typeof能判断哪些类型
typeof的作用
-
识别所有的值类型
-
识别函数
-
判断是否为引用类型(不可细分)
/**
* 使用递归的方法完成深拷贝
* 首先要旁段传入值 obj 不是值类型
* 然后通过 instanceof 判断 obj 是数组还是对象,再初始化返回结果值
* 最后循环 obj ,还要保证 key 不是原型的属性,然后使用递归给 result 赋值
*/
function deepClone(obj) {
if (typeof obj !== 'object' || obj == null) return obj
let result = obj instanceof Array ? [] : {}
for (let key in obj) {
if (obj.hasOwnProperty(key)) result[key] = deepClone(obj[key])
}
return result
}
const beforeCloneObject = {
age: 22,
name: 'pyd',
address: {
city: '广州'
},
arr: ['a', 'b', 'c']
}
const cloneObject = deepClone(beforeCloneObject)
console.log('cloneObject => ', cloneObject);
<script> // 使用== 100 == 'true' // true 0 == '' // true 0 == false // true false == '' // true null == undefined // true <script/>
const obj = {x :100} if(obj.a == null ){} // 等同于 if(obj.a === null || obj.a === undefined){}
if语句和逻辑运算
truly变量: !!a === true
的变量
falsely变量: !!a === false
// 以下是 falsely 变量。除此之外都是truly变量 !!0 === false !!NaN === false !!'' === false !!null === false !!undefined === false !!false === false