关于前端:ES611区别汇总

1次阅读

共计 3849 个字符,预计需要花费 10 分钟才能阅读完成。

问题汇总:

  1. var、let、const 区别(延长:变量晋升、函数晋升)

  2. let、const 是 ES6 新增的命令,用于申明变量;

  3. let、const 只在块级作用域失效,var 申明变量是全局的;

  4. var 存在变量晋升,let、const 不存在变量晋升;romis

  5. var 能够反复申明,let、const 在同一块作用域内不能反复申明;

  6. let、const 的区别:const 不能更改寄存在栈区里的根本数据类型和援用数据类型的指针,申明后不能再更改。

  7. 存在暂时性死区

  8. for、forEach、for…in、for…of 循环的区别

相同点:都能够遍历数组;

区别:

  1. for:毛病:不能间接遍历对象。

  2. forEach():毛病:不能间接遍历对象,循环不能跳出。

  3. for…in:长处:能够间接遍历对象,循环原型链的所有对象,毛病:耗费性能;保留的是键名,返回序列号 0 1 2 3

  4. for…of【最优】:可遍历 array,object,string,map,set 等,能够跳出循环;保留的是键值,返回 arr1 arr2 arr3

毛病:不适用于解决原有的原生对象。

解决 for、forEach、for…of 不能间接遍历对象的问题:将对象转为数组;

参考:https://www.cnblogs.com/goule/p/13630915.html

  1. ES5 和 ES6 的区别:

ECMAScript 是 JS 的外围,ES6 绝对于 ES5 在向下兼容的根底上提供大量新个性,如:

  • 块级作用域

  • 关键字 let, 常量 const、

  • 箭头函数

  • promise

  • this 指向问题

  • 类 Class

  • 对象字面量的属性赋值简写、

  • 字符串模板、

  • Iterators(迭代器)、

  • Modules、

  • Proxies、

  • Map+Set+WeakMap+WeakSet 四种汇合类型、

ES6 文档:https://es6.ruanyifeng.com/#docs/let

ES 版本更新:https://www.jianshu.com/p/824f255c2dd8

  1. 数据类型检测

  • typeof:检测根本数据类型,返回后果是字符串 typeof string

    
    *   毛病:不能细分对象,不能区别数组和对象
        
    *   原理:所存的值在内存都是按二进制贮存
        
  • instanceof:检测是否是某个类的实例 arr instanceof Array

  • constructor:检测构造函数 arr.constructor === Array

  • Object.prototype.toString.call:检测数据类型是数组,对象,函数

Object.prototype.toString.call(obj)

  • Array.isArray:检测数组 Array.isArray(arr)

  1. 如何辨别是数组还是对象

  2. Array.isArray():ES6 语法

  3. constructor:

  4. Object.prototype.toString.call():

  5. Object.prototype 的 toString():

  6. 基于 Object.prototype.isPrototypeOf()

  7. 基于 getPrototypeOf()

https://www.cnblogs.com/woniubushinide/p/11231646.html

  1. axios ajax fetch 区别

  • axios 是一种对 ajax 的封装,fetch 是一种浏览器原生实现的申请形式,跟 ajax 对等

  • ajax:是对原生 XHR 的封装,削减了对 JSONP 的反对

    
    *   var ajax = new xmlHttpRequest
        
    *   ajax.readystatus === 2
        
  • fetch:ES6 版本的 ajax,基于规范 Promise 实现,反对 async/await。

  • Axios:是基于原生 XHR,Promise 封装、用于浏览器和 node.js 的 HTTP 客户端;

Axios:反对 http 拦截器

  1. 创建对象的办法

  2. 通过字面量创立

  3. 通过 object 形式创立

  4. 应用工厂模式创建对象

  5. 应用构造函数模式创建对象

  6. 应用原型模式创建对象

https://m.html.cn/qa/javascript/11183.html

  1. 变量晋升的题

  • 变量晋升:带 var 会提前申明

  • 函数晋升:(旧版 IE10 及以下)带 function 会提前申明和定义

(新版)块级作用域会提前申明,不定义

  • 函数申明会优先被晋升

https://blog.csdn.net/qq_35895679/article/details/105904369

  1. OOP 面向对象编程

  • 解释:面向对象的编程办法 OOP 是九十年代才风行的一种软件编程办法。它强调对象的“形象”、“封装”、“继承”、“多态”。咱们讲程序设计是由“数据结构”+“算法”组成的。从宏观的角度讲,OOP 下的对象是以编程为核心的,是面向程序的对象。

  • 三大特点:封装 继承 多态

    
    *   封装:指可能把一个实体的信息、性能、响应都装入一个独自的对象中的个性。*   继承:长处:继承的办法容许在不改变原程序的根底上对其进行裁减,这样使得原性能得以保留,而新性能也得以扩大。这有利于缩小反复编码,进步软件的开发效率。
  • 对象的产生有两种根本形式:

    
    *   一种是以原型(prototype)对象为根底产生新的对象。*   一种是以类(class)为根底产生新对象。
  • 类(class):

    
    *   1) 公有成员(private):缺省状况下,一个类中的所有成员都是公有的。公有成员只能被类自身的成员函数拜访。可能被继承然而被继承的公有成员不可能应用。*   2) 私有成员(public):私有成员能够被类成员函数和内部函数应用。*   3) 爱护成员(protected):类的爱护成员能被类及其派生类的成员函数和友元函数应用,具备继承性。
  • 类 (Class) 用来形容具备雷同的属性和办法的对象的汇合。它定义了该汇合中每个对象所共有的属性和办法。对象是类的实例。

https://www.jianshu.com/p/b2dcf206cf87

  1. ES5 如何继承

  2. 原型链继承

  3. 借用构造函数继承

  4. 组合式继承

  5. 原型式继承

  6. 寄生式继承

  7. 寄生组合式继承

https://www.jianshu.com/p/c6f36b3a5408

  1. ES6 class(类)

  • 通过 class 关键字,能够定义类。

  • ES6 的类,能够看作构造函数的另一种写法。类的数据类型就是函数,类自身就指向构造函数。

  • 类必须应用 new 调用,否则会报错。这是它跟一般构造函数的一个次要区别,后者不必 new 也能够执行。

  • 类的外部所有定义的办法,都是不可枚举的(non-enumerable)。

https://es6.ruanyifeng.com/#docs/class

  1. 作用域,闭包,原型链

  2. 说一下三者的概念

作用域:ES5 全局作用域,函数作用域,ES6 块级作用域

闭包:指的是可能拜访另一个函数作用域的变量的函数。

原型链:构造函数,原型 prototype,constructor 组成

  1. 原型链有什么用途

  2. 怎么实现原型链继承

ES5: User.call(this,)扭转 this 指向。

ES6: class extends

10.23-ES6~ES11

  1. 你我的项目中什么中央用到了闭包?为什么要用闭包?闭包的原理是什么?

  1. es6

  2. 我的项目中有用到哪些 es6 的个性

(他重点想让你说出箭头函数和 promise,毫无疑问他还筹备了 this 相干的问题)

  • 箭头函数,

  • promise

  • let,const,

  • class extends

  • 模块化

  1. 说下 es5 和 es6 箭头函数中 this 的指向

  • es5 this 指向执行的上下文,apply、call、bind 能够扭转 this 指向。

  • es6 箭头函数:this 始终指向函数申明时所在作用域的 this 的值。

  1. 有哪些方法能够扭转 this

  • apply、call、bind 能够扭转 this 指向。

  • 应用 ES6 的箭头函数。

  1. promise 怎么应用?它解决了什么问题?

  • Promise 是异步编程的一种解决方案,比传统的异步解决方案【回调函数】和【事件】更正当、更弱小。

  • promise.then

  • Promise.all

  1. 怎么中断 promise?

(能够返回一个空的 promise,既无 resolve 也没有 reject)

  1. CommonJS 输入一组变量

  2. exports require

  3. [object Object]

  4. 调用 Object.prototype 的 toString()办法,返回数据类型是 Object;

  5. 对于 this:

对于 this: https://zhuanlan.zhihu.com/p/23804247

  1. this 指向

  • 一般函数的 this 是调用的中央

  • 箭头函数的 this 是申明的中央

  1. call apply bind,扭转 this 指向

  • call、apply、bind 这三个办法其实都是继承自 Function.prototype 中的,属于实例办法;

  • call、apply、bind 的作用是扭转函数运行时 this 的指向;

  • call()能够将实参在对象之后顺次传递,apply()须要将实参封装到一个数组中对立传递

  • bind 返回对应函数, 便于稍后调用;apply, call 则是立刻调用。

  • 在 ES6 的箭头函数下, call 和 apply 将生效

  1. this、super

  2. Object.setPrototypeOf

指定一个对象的原型:Object.setPrototypeOf(obj, prototype)

  1. this、global、globalThis

  • 在浏览器中,能够在程序的顶层应用 this 关键字来援用全局对象

  • 在 Node.js 中,能够应用 global 关键字拜访全局对象

  • globalThis 旨在通过定义一个规范的全局属性来整合日益扩散的拜访全局对象的办法
正文完
 0