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/>

除了 == null之外 ,其他都一律用 ===

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
原文地址:https://www.cnblogs.com/manhuai/p/14281956.html