徐向博 / Imin.

面试问题总结
作者:Imin 时间:2022-04-04 分类: 前端

最近几次面试中遇到的一些常见但是容易被忽略的问题,记录一下:


1、原始类型中的 null ,使用 typeof 得出的结果是什么?为什么?

typeof null 结果是 object。这实际上是 JavaScript 最初实现中的一个错误,然后被 ECMAScript 沿用了。现在,null 被认为是对象的占位符,从而解释了这一矛盾,但从技术上来说,它仍然是原始值。参考资料:https://www.w3school.com.cn/js/pro_js_primitivetypes.asp


2、null 和 undefined 的区别

        // typeof 结果不一样
        console.log(typeof null) // object
        console.log(typeof undefined) // undefined

        // 转对象时,值为 undefined 的数据会丢失
        let object = {
            a: 1,
            b: null,
            c: undefined
        }
        console.log(object) // {a: 1, b: null, c: undefined}
        console.log(JSON.stringify(object)) // {"a":1,"b":null}
       
        // 转成数字时
        console.log(Number(null)) // 0
        console.log(Number(undefined)) // NaN


3、vue 权限管理的

这个问题每个人处理的方式不一样,但我觉得面试官可能想听到的是基于 vue-router 路由守卫的一些知识。


4、js的异步实现

这里包含了对js执行过程的理解,多了解js的事件循环机制即可。参考文档:https://www.cnblogs.com/cangqinglang/p/8967268.html

需要提醒的是,这里面涉及到的堆栈,和传统意义上所理解的堆栈可能有一些区别。


5、vue的响应式原理和双向绑定的原理

这个问题都问烂了,涉及到vue的面试必问。

好好看一下 Object.defineProperty,理解这个概念的基础部分很简单,参考文档:MDN


-- 2022.04.05 更新

6、vue 组件中data为什么是一个函数

因为组件是可复用的,如果直接使用对象,实际上使用的是同一个内存地址中的数据,在某个组件中数据发生变化时,其他组件也会被改变,所以需要为每个组件的data创造一个独立的作用域,而function可以做到这一点