美文网首页互联网科技Web前端之路
前端程序员面试你应该懂的原生JS——1

前端程序员面试你应该懂的原生JS——1

作者: 易懂程序猿 | 来源:发表于2019-05-23 16:57 被阅读3次

    本文梳理出了一些面试中有一定难度的高频原生JS问题,部分知识点可能你之前从未关注过,或者看到了,却没有仔细研究,但是它们却非常重要。

    1. 原始类型有哪几种?null 是对象吗?原始数据类型和复杂数据类型存储有什么区别?

    原始类型有6种,分别是undefined,null,bool,string,number,symbol(ES6新增)。

    虽然 typeof null 返回的值是 object,但是null不是对象,而是基本数据类型的一种。

    原始数据类型存储在栈内存,存储的是值。

    复杂数据类型存储在堆内存,存储的是地址。当我们把对象赋值给另外一个变量的时候,复制的是地址,指向同一块内存空间,当其中一个对象改变时,另一个对象也会变化。

    2. ES6中的class和ES5的类有什么区别?

    1.ES6 class 内部所有定义的方法都是不可枚举的;

    2.ES6 class 必须使用 new 调用;

    3.ES6 class 不存在变量提升;

    4.ES6 class 默认即是严格模式;

    5.ES6 class 子类必须在父类的构造函数中调用super(),这样才有this对象;ES5中类继承的关系是相反的,先有子类的this,然后用父类的方法应用在this上。

    3. 数组的哪些API会改变原数组?

    修改原数组的API有:

    splice/reverse/fill/copyWithin/sort/push/pop/unshift/shift

    不修改原数组的API有:

    slice/map/forEach/every/filter/reduce/entry/entries/find

    4. let、const 以及 var 的区别是什么?

    1.let 和 const 定义的变量不会出现变量提升,而 var 定义的变量会提升。

    2.let 和 const 是JS中的块级作用域

    3.let 和 const 不允许重复声明(会抛出错误)

    4.let 和 const 定义的变量在定义语句之前,如果使用会抛出错误(形成了暂时性死区),而 var 不会。

    5.const 声明一个只读的常量。一旦声明,常量的值就不能改变(如果声明是一个对象,那么不能改变的是对象的引用地址)

    5. 什么是闭包?闭包的作用是什么?闭包有哪些使用场景?

    闭包是指有权访问另一个函数作用域中的变量的函数,创建闭包最常用的方式就是在一个函数内部创建另一个函数。

    闭包的作用有:

    1.封装私有变量

    2.模仿块级作用域(ES5中没有块级作用域)

    3.实现JS的模块

    6. 谈谈你对原型的理解?

    在 JavaScript 中,每当定义一个对象(函数也是对象)时候,对象中都会包含一些预定义的属性。其中每个函数对象都有一个prototype 属性,这个属性指向函数的原型对象。使用原型对象的好处是所有对象实例共享它所包含的属性和方法。

    分享超过5万程序员朋友下载的web前端学习资料,这次我把所有干货重新梳理精简,从零基础到深入进阶,分享给大家。 获取方式:官方企鹅群:9567,66604(持续招募中)

    相关文章

      网友评论

        本文标题:前端程序员面试你应该懂的原生JS——1

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