es6 相关面试总结

1、es6 是什么

     新一代的js 语言标准,对其核心做了升级优化,更加适合大型应用开发。

2、箭头函数优缺点

     优点: 1.代码优化     2.this 指向不会变动,永远指向其父元素  

     缺点: 1.没有arguments 参数   2.不能通过 apply call bind改变this指向

    不能用箭头函数的场景: 1.构造函数  2.对象原型  3.对象方法

3、箭头函数怎么获取arguments : 可以使用es6 的解构语法来代替

4、let const var 区别

     相同作用域下,let const 不能重复声明,而var 可以

     var 可以跨块,let  const 不能

     const 定义的常量不能改变,并且必须初始化(注:const 定义的对象,是可以允许修改其属性值的,const 定义的数组,其元素可以被改变。 可以用Object.freeze()来冻结就不可以修改了)

5、es6 对字符串做了哪些升级优化

    新增了模板字符串

    新增方法

              inclueds()  判断是否包含某字符串 返回true/false   

              startsWith() 检测是否以指定字符串开始 返回true/false

              endWith() 检测是否以指定字符串结束 返回true/false

              repeat() 重复字符串多少遍

              padstart() 从头部补全字符串

              padend() 从尾部补全字符串

6、数组方面的优化升级

      数组结构赋值

       扩展运算符 ...

       新增的方法

                find()找到符合条件的第一个元素,并返回,没找到返回 undifined

                includes() 查看是否包含某元素 

                fill()用新元素替换数组内元素

                flat() 扁平化数组

  7、number 数值方面的优化升级

       isFinite() 判断有限数

       isInteger() 判断是否为整数

       isNaN() 判断一个值是否为NaN

8、 对象方面的优化升级

      可以直接以变量形式声明

      对象的解构赋值

      对象的扩展运算符

      新增的方法:

                object.is() 接收两个参数,判断两个参数值以及类型,是否相等,返回true/false

                object.assign()将原对象所有的属性,复制到目标对象,(如果后面的参数有一个不是对象,就会抛出typeerror 错误)

                      let obj1 = {a:1}

                      let obj2 = {b:2}

                      consolelog(object.assign({},obj1,obj2)) // {a:1,b:2}

                object.setPrototypeof() 同 proto 设置当前对象的prototype对象

                object.getPrototypeof() 同 proto 读取当前对象的prototype对象

                object.keys() 获取所有键名

                object.values()获取所有键值

                objcet.entries()获取所有键值对数组

9、函数方面的优化升级

      箭头函数

      双冒号运算符::    用来取代,bind/call/apply

10、symblo 是什么?有什么作用?

        es6 引入的新的数据类型,表示独一无二的值

11、set 是什么?有什么作用?

        是array 的一种新的数据结构,它的成员都是唯一的。(这个特性可以实现数组去重)

 12、Map()是什么?(map 的遍历顺序是插入顺序)

        是es6 引入的一种新的数据结构,类似于对象,但是键名不仅仅可以是字符串,它可以是任何类型。

13、proxy 

         作用:用于创建一个对象的代理,从而实现基本操作的拦截和定义。可以理解成是一种拦截器,在目标对象之前设一层拦截,想要访问必须先通过该拦截

        用法: const p = new Proxy(target, handler)

                    target: 要使用proxy 包装的目标对象

                    handler:以函数作为属性的对象

        常用的拦截方法:

                    apply:拦截函数调用的操作

                    get:拦截对象属性的读取

                    set:拦截对象属性的设置

                     更多es6 新特性 之 Proxy, 这次彻底搞懂 - 掘金

14、promise

        理解: es6 新引入的构造器,用来优化异步代码。解决‘回调地狱’,可读性更高,可以链式调用。

        优点:1、可以链式调用,减低编码难度,2、代码可读性增强。3、对象的状态不受外界影响,状态一旦改变,就不会在变

        promise有3种状态:1、pending(进行中),  2、fulfilled(成功)  3、rejected(失败)     

       状态的缺点: 1、无法取消  2、当pending 时,无法得知当前的状态,时刚刚开始还是即将完成。

     then方法: 接受两个函数作为参数,1:promise 成功的回调。2:promise 失败的回调

                        特点: 1、通过.then添加的回调。不论什么时候,都会被调用。(js 常规写法种,如果未执行完成,就不会调用。)2、可以多次调用 

 15、for...in  和for ... of 的区别

         for in 一般遍历对象的key .for of 一般遍历数组的value。

16、async 函数是什么?有什么作用

        async 可以理解成,promise 的语法糖,配合promise 更好的实现异步操作。

17、什么是class,作用是什么?extends是什么作用

         可以看作是es5 生成实例对象的构造函数的语法糖。

         作用:定义了类 的概念,写法更加清晰,更像一种面向对象编程

         extends: 新引入的关键字,本质还是构造函数+原型链的继承, 作用是:class 可以通过extends 实现继承。

        class 和es5 的构造函数的区别:1、类内部定义的所有方法,都不可枚举。2、class 必须用new 命令操作。3、class 不存在变量提升,必须先定义才能实例化。4、继承机制不同

18、module、exprot、import   

        是es6 统一前端模块化的设计思想和实现。

        exprot作用:用于从模块中导出内容(函数、对象、原始值),通过import 语句导入使用它们

        exprot default: 用于文件的默认导出接口,一个文件只能有一个

        commonJS 种的reqire(),exprots 组合 与  es module 种的import,export组合


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/214340.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年11月10日 Go生态洞察:十四年Go的成长之路

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

[山东大学操作系统课程设计]实验四+实验五

0.写在前面: 为什么这次把两个实验放在一起写了,因为实验五的要求就是在实验四的基础上完成实现的。但是我得实现说明,我的实验四虽然完成了要求,但是无法在我自己的实验四的基础上完成实验五,这是一个很大的问题&…

免费的SEO外链发布工具,提升排名的利器

互联网已经成为信息传播和商业发展的重要平台。而对于拥有网站的个人、企业来说,如何让自己的网站在搜索引擎中脱颖而出?SEO(Search Engine Optimization)作为提高网站在搜索引擎中排名的关键手段. 什么是SEO外链? S…

class064 Dijkstra算法、分层图最短路【算法】

class064 Dijkstra算法、分层图最短路【算法】 算法讲解064【必备】Dijkstra算法、分层图最短路 code1 743. 网络延迟时间 // Dijkstra算法模版(Leetcode) // 网络延迟时间 // 有 n 个网络节点,标记为 1 到 n // 给你一个列表 times&…

Linux(centos)学习笔记(初学)

[rootlocalhost~]#:[用户名主机名 当前所在目录]#超级管理员标识 $普通用户的标识 Ctrlshift放大终端字体 Ctrl缩小终端字体 Tab可以补全命令 Ctrlshiftc/V复制粘贴 / :根目录,Linux系统起点 ls: #list列出目录的内容,通常用户查看…

Word插件-好用的插件-一键设置字体--大珩助手

常用字体 整理了论文、公文常用字体 整理了常用的论文字体,可一键设置当前节或选择的文字的字体 字体设置 包含字体选择、字体颜色 特殊格式 包含首字下沉、段落分栏、统一宽度、双行合一、上标切换、下标切换、转为全角、转为半角、挖词填空、当前日期、大写金…

思科最新版Cisco Packet Tracer 8.2.1安装

思科最新版Cisco Packet Tracer 8.2.1安装 一. 注册并登录CISCO账号二. 下载 Cisco Packet Tracer 8.2.1三. 安装四. 汉化五. cisco packet tracer教学文档六. 正常使用图 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新…

uniApp项目的创建,运行到小程序

一、项目创建 1. 打开 HBuilder X 2. 右击侧边栏点击新建,选择项目 3. 填写项目名,点击创建即可 注:uniapp中如果使用生命周期钩子函数,建议使用哪种 ?(建议使用Vue的) 二、运行 1. 运行前先登录 2. 登录后点击 manifest.js…

YOLOv8 目标过线计数

使用 Ultralytics YOLOv8 进行目标计数 🚀 实际应用场景 物流水产养殖使用 Ultralytics YOLOv8 进行传送带包裹计数使用 Ultralytics YOLOv8 在海中进行鱼类计数请使用最新代码(2023年12月8日后),旧版本不支持! 示例 “目标计数示例” 目标计数 from ultralytics

公有云迁移研究——AWS Route53

大纲 1 什么是Route 532 Route 53能做些什么# 3 通过DNS托管来实现分流3.1 创建DNS托管3.2 对托管创建记录对流量进行分配 4 通过流量策略来对流量进行分流4.1 创建流量策略 5 对比两者的区别6 推荐 在给客户从本地机房往AWS迁移的过程中,我们接到如下需求&#xff…

SpringBoot 项目 Jar 包加密,防止反编译

1场景 最近项目要求部署到其他公司的服务器上,但是又不想将源码泄露出去。要求对正式环境的启动包进行安全性处理,防止客户直接通过反编译工具将代码反编译出来。 2方案 第一种方案使用代码混淆 采用proguard-maven-plugin插件 在单模块中此方案还算简…

[香橙派]orange pi zero 3 烧录Ubuntu系统镜像——无需HDMI数据线安装

一、前言 本文我们将介绍如何使用orange pi zero 3 安装Ubuntu系统,本文相关步骤均参考自开发手册。 二、实施准备 根据开发手册中所提到的,我们应该拥有如下配件: 1.orange pi zero 3 开发板 2.TF 卡——最小 8GB 容量的 class10 级或以上的高速闪迪卡。…

错题总结(四)

1.【一维数组】输入10个整数&#xff0c;求平均值 编写一个程序&#xff0c;从用户输入中读取10个整数并存储在一个数组中。然后&#xff0c;计算并输出这些整数的平均值。 int main() {int arr[10];int sum 0;for (int n 0; n < 10; n){scanf("%d", &arr…

58.Nacos源码分析2

三、服务心跳。 3.服务心跳 Nacos的实例分为临时实例和永久实例两种&#xff0c;可以通过在yaml 文件配置&#xff1a; spring:application:name: order-servicecloud:nacos:discovery:ephemeral: false # 设置实例为永久实例。true&#xff1a;临时; false&#xff1a;永久ser…

Nginx负载均衡实战

&#x1f3b5;负载均衡组件 ngx_http_upstream_module https://nginx.org/en/docs/http/ngx_http_upstream_module.html upstream模块允许Nginx定义一组或多组节点服务器组&#xff0c;使用时可以通过多种方式去定义服务器组 样例&#xff1a; upstream backend {server back…

Python开源项目周排行 2023年 第39周

Python 趋势周报&#xff0c;按周浏览往期 GitHub,Gitee 等最热门的Python开源项目&#xff0c;入选的项目主要参考GitHub Trending,部分参考了Gitee和其他。排名不分先后&#xff0c;都是当周相对热门的项目。 入选公式&#xff1d;70%GitHub Trending20%Gitee10%其他 关注微…

C# WPF上位机开发(动态库dll的开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 很多时候&#xff0c;我们并不希望所有的程序都放到一个exe里面。因为这样相当于把所有的风险都放在了一个文件里里面&#xff0c;既不利于程序的升…

[CTFshow 红包挑战] 刷题记录

文章目录 红包挑战7红包挑战8红包挑战9 红包挑战7 考点&#xff1a;xdebug拓展 源码 <?php highlight_file(__FILE__); error_reporting(2);extract($_GET); ini_set($name,$value);system("ls ".filter($_GET[1])."" );function filter($cmd){$cmd s…

P2 Qt Creator创建第一个Qt程序

前言 &#x1f3ac; 个人主页&#xff1a;ChenPi &#x1f43b;推荐专栏1: 《C_ChenPi的博客-CSDN博客》✨✨✨ &#x1f525; 推荐专栏2: 《LLinux C应用编程&#xff08;概念类&#xff09;_ChenPi的博客-CSDN博客》✨✨✨ &#x1f33a;本篇简介 &#xff1a;这一章我们学…

简易加减运算器的制作----数字电路设计(含proteus仿真)

简易加减运算器的制作 一、功能要求—基本功能 1、自制0-9按键&#xff0c;在一个LED数码管上稳定地显示当前按下的值。&#xff08;基本功能&#xff09; 2、增加、两个按键&#xff0c;实现0-9两个一位数的加法运算&#xff0c;同时在两位LED上稳定地显示运算结果。&#…