美文网首页
前端开发知识+面试万字全总结

前端开发知识+面试万字全总结

作者: you的日常 | 来源:发表于2021-04-08 10:26 被阅读0次

    本文非百科全书,只专为面试复习准备、查漏补缺、深入某知识点的引子、了解相关面试题等准备。

    笔者一直都是崇尚学会面试题底下涉及到的知识点,而不是刷一大堆面试题,结果变了个题型就不会的那种。所以本文和别的面经不一样,旨在提炼面试题底下的常用知识点,而不是甩一大堆面试题给各位看官。

    数据类型

    JS 数据类型分为两大类,九个数据类型:

    1. 原始类型
    2. 对象类型

    其中原始类型又分为七种类型,分别为:

    • boolean
    • number
    • string
    • undefined
    • null
    • symbol
    • bigint

    对象类型分为两种,分别为:

    • Object
    • Function

    其中 Object 中又包含了很多子类型,比如 ArrayRegExpMathMapSet 等等,也就不一一列出了。

    原始类型存储在栈上,对象类型存储在堆上,但是它的引用地址还是存在栈上。

    注意:以上结论前半句是不准确的,更准确的内容我会在闭包章节里说明。

    常见考点

    • JS 类型有哪些?
    • 大数相加、相乘算法题,可以直接使用 bigint,当然再加上字符串的处理会更好。
    • NaN 如何判断

    另外还有一类常见的题目是对于对象的修改,比如说往函数里传一个对象进去,函数内部修改参数。

    function test(person) {
      person.age = 26
      person = {}
    
      return person
    }
    const p1 = {
      age: 25
    }
    

    这类题目我们只需要牢记以下几点:

    1. 对象存储的是引用地址,传来传去、赋值给别人那都是在传递值(存在栈上的那个内容),别人一旦修改对象里的属性,大家都被修改了。
    2. 但是一旦对象被重新赋值了,只要不是原对象被重新赋值,那么就永远不会修改原对象。

    类型判断

    类型判断有好几种方式。

    typeof

    原始类型中除了 null,其它类型都可以通过 typeof 来判断。

    image.png

    typeof null 的值为 object,这是因为一个久远的 Bug,没有细究的必要,了解即可。如果想具体判断 null 类型的话直接 xxx === null 即可。

    对于对象类型来说,typeof 只能具体判断函数的类型为 function,其它均为 object

    instanceof

    instanceof 内部通过原型链的方式来判断是否为构建函数的实例,常用于判断具体的对象类型。

    [] instanceof Array
    

    都说 instanceof 只能判断对象类型,其实这个说法是不准确的,我们是可以通过 hake 的方式得以实现,虽然不会有人这样去玩吧。

    class CheckIsNumber {
      static [Symbol.hasInstance](number) {
        return typeof number === 'number'
      }
    }
    
    // true
    1 instanceof CheckIsNumber
    

    另外其实我们还可以直接通过构建函数来判断类型:

    // true
    [].constructor === Array
    

    Object.prototype.toString

    前几种方式或多或少都存在一些缺陷,Object.prototype.toString 综合来看是最佳选择,能判断的类型最完整。

    相关文章

      网友评论

          本文标题:前端开发知识+面试万字全总结

          本文链接:https://www.haomeiwen.com/subject/uaumkltx.html