前端基础JS变量类型和计算常考面试题知识

变量的类型分为值类型和引用类型

typeof运算符

  • 识别所有值类型
  • 识别函数
  • 判断是否是引用类型

手写深拷贝

/**
 * 深拷贝
 * @param {Object} obj 要拷贝的对象
 */
function deepClone(obj = {}) {
    if (typeof obj !== 'object' || obj == null) {
        // obj 是 null ,或者不是对象和数组,直接返回
        return obj
    }

    // 初始化返回结果
    let result
    if (obj instanceof Array) {
        result = []
    } else {
        result = {}
    }

    for (let key in obj) {
        // 保证 key 不是原型的属性
        if (obj.hasOwnProperty(key)) {
            // 递归调用!!!
            result[key] = deepClone(obj[key])
        }
    }

    // 返回结果
    return result
}

类型转换

  1. 字符串拼接
  2. ==
    • 除了 == null之外,其他都一律用 === ,例如:
      const obj = { x: 100 }
      if (obj.a == null) {}
      //相当于:if (obj.a === null || obj.a === undefined) {}
      
  3. if语句和逻辑运算(判断的是不是truly变量还是falsely变量)
    • truly变量: !!a === true 的变量
    • falsely 变量: !!a === false的变量


你可能感兴趣的:(前端基础JS变量类型和计算常考面试题知识)