zoukankan      html  css  js  c++  java
  • 前端面试基础二

    typeof 能判断哪些类型?

    考点: js 变量类型

    • 识别所有值类型
    • 识别函数
    • 判断是否是引用类型(不可在细分)

    判断所有值类型

    let a; typeof a // 'undefined'
    const str = 'abc'; typeof str // 'string'
    const n = 100; typeof str // 'number'
    const b = true; typeof str // 'boolean'
    const s = Symbol('s'); typeof str // 'symbol'

    识别函数

    typeof console.log // 'function'
    typeof function () {} // 'function'

    判断是否是引用类型(不可在细分)

    typeof null // 'object'
    typeof ['a', 'b'] // 'object'
    typeof {x: 100} // 'object'

    发散面试题-深拷贝

    const obj1 = {
        age: 30,
        name: 'yang',
        address: {
            city: '北京',
            area: '昌平'
        },
        arr: ['a', 'b', 'c']
    }
    
    const obj2 = deepClone(obj1)
    
    obj2.address.city = '上海'
    console.log(obj1.address.city) // 北京
    console.log(obj2.address.city) // 上海
    
    /**
     * @description: 深拷贝
     * @param {object} obj 要深拷贝的对象 
     * @return: {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
    }

    何时使用 == 何时使用 === ?

    考点: 强制类型转换

    == 运算符

    100 == '100' // true
    0 == '' // true
    0 == false // true
    false == '' // true
    null == undefined // true

    == 尽量让他们的值转换之后去对比相等

    什么时候用 === ?

    // 除了 == null 之外, 其它的一律都用 ===, 如
    const obj = { x: 100 }
    if (obj.a == null) {}
    // 相当于 if (obj.a === null || obj.a === undefined) {}

    if 语句和逻辑运算

    // 一下是 falsely 变量, 除此之外都是 truly 变量
    !!0 === false
    !!NaN === false
    !!'' === false
    !!null === false
    !!undefined === false
    !!false === false

    逻辑判断

    console.log(10 && 0) // 0
    console.log(0 && 10) // 0
    console.log('' || 'abc') // abc
    console.log(!window.abc) // true

    值类型和引用类型的区别?

    考点: 强制类型转换

    const obj1 = { x: 100, y: 200 }
    const obj2 = obj1
    let x1 = obj1.x
    obj2.x = 101
    x1 = 102
    console.log(obj1) // { x: 101, y: 200 }

    window.onload 和 DOMContenLoaded 的区别?

    考点: 页面加载过程

    ...

    JS 创建 10 个 <a> 标签, 点击的时候弹出对应的序号

    考点: js 作用域

    ...

    手写节流 throttle, 防抖 debounce

    考点: 性能, 体验优化

    ...

    Promise 解决了什么问题?

    考点: js 异步

    ...

    前端知识体系

    JS 基础语法

    JS-Web-API

    开发环境

    运行环境

  • 相关阅读:
    宿主机无法访问CentOS7上Jenkins服务的解决办法
    415. Add Strings
    367. Valid Perfect Square
    326. Power of Three
    258. Add Digits
    231. Power of Two
    204. Count Primes
    202. Happy Number
    172. Factorial Trailing Zeroes
    171. Excel Sheet Column Number
  • 原文地址:https://www.cnblogs.com/helzeo/p/12755172.html
Copyright © 2011-2022 走看看