草庐IT

es6新增哪些特性

Pinia- 2023-05-22 原文

1、新增了let const关键字

  1. let var const的区别
  • let 是代码块有效 var是全局有效
  • let 是不能重复声明的 var是可以多次声明
  • let不存在变量的提升 var存在变量的提升
  • const存储简单数据类型存储的是常量

2、新增的解构赋值

解构赋值针对数组或者对象进行模式匹配,然后对其中的变量进行赋值。

let [a,b]=[1,2]

let {user}={user:“xiaosi”}

3、新增了箭头函数

箭头函数和普通函数的区别

  1. 普通函数存在着变量的提升,箭头函数没有
  1. 普通函数的this指向,谁调用指向谁,箭头函数是在哪定义就指向谁
  1. 普通函数可以当成构造函数,而箭头函数是不可以的
  1. 箭头函数没有arguments,要接受所有的参数用...rest

4、js的数据类型

  1. 简单数据类型

Number 、 String 、 Boolean 、 null 、undefined 、Symbol 

  1. 引用数据类型

Object Array Function Date RegExp

5、数据类型判断 (得准确的知道每一种数据类型判断缺点)

  1. typeof 能判断基本的数据类型,返回基本数据类型小写字符串形式 除了null,用typeof判断null 返回Object
  1. instanceof 可以判断引用数据类型 正常的判断A是B的实例是没有问题的,但是所有引用数据类型的对象用instanceof判断都是Object的实例
  1. constructor 构造函数可以判断除了undefined 和null之外的任何数据类型,页解决了instanceof的问题
  1. 最完美的解决方案 Object.prototype.toString.call()返回的是[ Object 数据类型]

6、es6新增了模块化

根据功能封装模块 通过import导入 然后通过export导出

可以使用 export 导出也可以使用export default导出

我们使用import 来导入

export 和 export defualt的区别

  1. export 可以导出多个属性或者方法 ,需要用{}括起来 在用import接受的时候也得用{}接受
  1. export default是以整体的方式抛出,接受的时候只接一个

7、promise

promise是es6处理异步的一种方式,它的本质是一个对象,promise的参数是一个回调,回调有连个参数 resolve 成功回调 reject 失败回调。它有三种状态分别为 初始状态pending 已完成fulfilled 已失败rejected。状态改变只有两种结果 完成或者失败。

promise处理错误的方式有两种 第一种在then中传递两个回调 第二个回调是错误回调

第二种方式是通过catch方式来实现

promise常用的api有 then ()处理回调函数 catch()捕获异常 还有两个常用的静态方法

Promise.all()一块处理多个promise请求,所有的请求都成功才成功。

Promise.race()一块处理多个promise请求,有一个成功就成功

es7中可以使用async实现异步处理,还有一个关键字await可以实现异步函数同步化

8、新增类class关键字

class关键字是es5构造函数+原型模式创建对象的语法糖。创建类的方式 class 类名{构造函数和方法} 通过extends关键字实现继承。

需要录制的面试题:

  1. js的数据类型
  1. js的数据类型判断
  1. 箭头函数与普通函数的区别
  1. let const var的区别
  1. promise

9、es6新增哪些特性?

  1. es6新增了promise(标题) 需要说什么是promise
  1. es6新增了模块化 需要说什么是模块化
  1. 新增了class关键字 需要解释
  1. 新增了箭头函数 再说箭头函数与普通函数的区别
  1. 新增了解构赋值 需要解释什么是解构赋值
  1. 新增了let const关键字 需要说let const var的区别
  1. 新增了简单数据类型symbol

10、作用域与作用域链

作用域:就是变量的使用范围。js中作用域分为全局和局部

js的作用域分为全局作用域和局部作用域。在全局作用域中是不能访问局部作用域中的数据。在局部作用域中访问变量如果当前作用域中有可以直接访问,如果没有那么向上级作用域中访问,如果上级作用域也没有就继续向上找,知道找到全局window作用域,如果window作用域也没有返回undefined,整个作用域的访问形成了一个作用域链

11、说一下闭包

概念

闭包是指有权访问另外一个函数作用域中的变量的函数。可以理解为(能够读取另一个函数作用域的变量的函数)

特性

1:函数套函数

2:内部函数可以直接访问外部函数的内部变量或参数

3:变量或参数不会被垃圾回收机制回收

定义

Plain Text

<script> //第一种定义方式 function  outer(){ var num=10; function inner(){ return num+=10 } return inner() } //调用 console.log(outer()) //第二种定义方式 function  out(){ var num=10; return inner=function(){ return num+=10 } } //调用 console.log(out()())</script>

优缺点

优点:

1:变量长期驻扎在内存中

2:避免全局变量的污染

3:私有成员的存在

缺点:

常驻内存 增大内存的使用量 使用不当会造成内存的泄露.

12、原型与原型链

原型:每一个对象都有一个prototype属性可以挂载要扩展的属性和方法,在prototype上挂载的属性和方法在这个对象的任何实例上都可以调用。

当一个对象调用自身不存在的属性/方法时,就会去prototype关联的父类对象上去找,如果找不到继续去父类关联的对象上去找,直到找到Object的属性和方法,找到直到调用,找不到返回undefined

13、对象的浅拷贝与深拷贝

由于引用数据类型的数据是存储在堆空间中,在栈空间中存储的是是数据的引用地址。

对象的浅拷贝就是将栈空间中的地址复制一份,两个地址指向的同一个数据

浅拷贝可以使用Object.assign()来实现 深拷贝可以使用JSON.stringify()先转换为json的串复制,然后再通过JSON.parse()转换回来

14、说一下js的事件机制

js中存在两种事件机制,一个是ie提出的冒泡事件机制 还有一个是网景提出的捕获型事件机制

冒泡事件机制是先触发事件的的直接元素,然后向外扩散就像冒泡一样。捕获型就是事件从外向里执行。js中的事件监听addEventListener的第三个参数默认的为false 是冒泡 为true是捕获

我们可以通过event.stopPropagation()来实现

15、rem布局的原理

1rem的大小就是根元素<html>的font-size的值,通过设置 根元素<html>的font-size的大小,来控制整个html文档内的字体大小、元素宽高、内外边距等

16、如何实现响应式布局

响应式布局可以让网站同时适配不同分辨率和不同的手机端,让客户有更好的体验

响应式布局实现的方案:

  1. 百分比布局
  1. 媒体查询
  1. rem布局
  1. vw vh布局
  1. flex弹性盒布局

17、$route和$router的区别

$route是一个跳转的路由对象,每一个路由都会有一个$route对象,是一个局部的对象,可以获取对应的name,path,params,query等

$router是VueRouter的一个对象,通过Vue.use(VueRouter)和Vue构造函数得到一个router的实例对象,这个对象中是一个全局的对象,他包含了所有的路由,包含了许多关键的对象和属性。

18、params和query传参的区别

  1. params传值的参数是路由的一部分,所以调转必须加参数值才能调转 query传参和路由配置没有关系
  1. 获取方式是不一样的 query this.$route.query.参数名 params是 this.$route.params.参数名

19、mpa和spa的区别

mpa 多页面应用

一套系统有多个页面组成,页面之间的切换是由a标签的herf属性和script的location.href来实现的

spa是单页面应用

一套系统就由一个页面来承载,数据的切换是由路由来实现

mpa与spa的优缺点:

  • 对于切换来说,路由的切换肯定比页面的切换更顺畅 所以spa的切换会好
  • spa的首屏加载慢,mpa的首屏加载快

有关es6新增哪些特性的更多相关文章

  1. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  2. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  3. ruby-on-rails - 您希望看到哪些 Rails 插件? - 2

    您认为可以作为插件很好地存在于您的Rails应用程序中必须实现的哪些行为?您过去曾搜索过哪些插件功能但找不到?哪些现有的Rails插件可以改进或扩展,如何改进或扩展? 最佳答案 我希望在管理界面中看到一个引擎插件,它提供了应用程序中所有模型的仪表板摘要,以及可配置的事件图表。 关于ruby-on-rails-您希望看到哪些Rails插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questio

  4. ruby - 实现k最近邻需要哪些数据? - 2

    我目前有一个reddit克隆类型的网站。我正在尝试根据我的用户之前喜欢的帖子推荐帖子。看起来K最近邻或k均值是执行此操作的最佳方法。我似乎无法理解如何实际实现它。我看过一些数学公式(例如k表示维基百科页面),但它们对我来说并没有真正意义。有人可以推荐一些伪代码,或者可以查看的地方,以便我更好地了解如何执行此操作吗? 最佳答案 K最近邻(又名KNN)是一种分类算法。基本上,您采用包含N个项目的训练组并对它们进行分类。如何对它们进行分类完全取决于您的数据,以及您认为该数据的重要分类特征是什么。在您的示例中,这可能是帖子类别、谁发布了该项

  5. ruby-on-rails - 是否有可能发现 Ruby on Rails 应用程序中未使用哪些类? - 2

    在我们的项目中,我们有一些“被遗忘的”类存在了很长一段时间。那些类已被其他类替代,但我们忘记删除它们。是否有一些自动化的方法/工具可以发现Ruby{onRails}应用程序中没有使用哪些类?谢谢! 最佳答案 这个问题已经被提出了很多次,但是最好的答案都在这里:FindunusedcodeinaRailsapp我个人喜欢日志解析:https://stackoverflow.com/a/14161807但在任何情况下,您都可以创建自己的记录器,扩展ActiveRecord::Base以创建一个观察器,该观察器将最常用的模块存储在数据库中

  6. ruby - 哪些 IDE 可用于 jRuby? - 2

    我进行了一些谷歌搜索,似乎缺少用于jRuby的IDE。我读过TextMate和Sublime,但它们不提供调试或代码完成功能。有人可以提出建议吗(或者这项技术还处于起步阶段)? 最佳答案 有几个选项;我更喜欢JetBrains'IntelliJ(RubyMine).AptanahasanEclipseplugin.NetBeansusedtohaveofficialsupport,不确定currentstate是什么是。 关于ruby-哪些IDE可用于jRuby?,我们在StackOve

  7. ruby-on-rails - 对于诸如libyaml之类的已编译库,Ruby(或RVM)在文件系统中搜索哪些位置以加载或解析它们? - 2

    操作系统:CentOS6.2x86_64很抱歉缩进太古怪了。这是我的第一篇SO帖子,我是新来设置服务器的。不过,我正在学习,并将详细说明我尝试解决此问题所采取的步骤以及寻求帮助的地方。我是一位有抱负的年轻Web开发人员,并且我在其他人配置的服务器上工作,因此,这对我来说是全新的。我正在准备我最近购买的用于运行Rails应用程序的linode。我遵循了此处http://blog.blenderbox.com/2011/01/07/installing-rvm-ruby-rails-passenger-nginx-on-centos/提供的初始安装指南,并更改了步骤:sudobash反射(

  8. 对于体育新闻中文文本关键字提取有哪些关键字提取算法及其步骤 - 2

    对于体育新闻中文文本的关键字提取,常用的算法包括TF-IDF、TextRank和LDA等。它们的基本步骤如下:1.TF-IDF算法: -将文本进行分词和词性标注处理。-统计每个词在文本中的词频(TF)。-计算每个词在整个语料库中出现的文档频率(DF)和逆文档频率(IDF)。-计算每个词的TF-IDF值,并按照值的大小进行排序,选择排名前几的词作为关键字。2.TextRank算法:-将文本进行分词和词性标注处理。-将分词结果转化成图模型,每个词语为节点,根据词语之间的共现关系建立边。-对图模型进行迭代计算,计算每个节点的PageRank值,表示该节点的重要性。-选择排名前几的节点作为关键字。3.

  9. 0基础学习软件测试有哪些建议 - 2

    其实现在基础的资料和视频到处都是,就是看你有没有认真的去找学习资源了,去哪里学习都是要看你个人靠谱不靠谱,再好的教程和老师,你自己学习不进去也是白搭在正式选择之前,大可以在各种学习网站里面找找学习资源先自己学习一下为什么选择学软件测试?同学们理由众多!大概分这几类:①不受开发语言、行业产品变化限制;②入门更简单,对零基础、女生都友好;③软件项目都需要测试人员,职业生涯稳;④学习周期短,但薪资并不低。要想“肩扛”一条线?需掌握三大技能:技能1:掌握测试流程,熟悉系统框架能提前与开发人员一起制定测试计划,通过测试左移,推动代码评审,代码审计,单元测试,自动化冒烟测试,来保证研发阶段的质量。技能2:

  10. c# - 与 C# 相比,您会强调 Ruby 的哪些语言特性? - 2

    我正在就Ruby语言和环境向.NET(C#)开发团队进行一系列演讲。我把它当作一个机会来强调Ruby相对于C#的优势。首先,我想在进入环境之前专注于语言本身(RoR与ASPMVC等)。你会介绍Ruby语言的哪些特性? 最佳答案 我刚才在一个.NET用户组做了一个关于IronRuby的演讲,遇到了类似的问题。我关注的事情是:鸭子打字。没有什么比ListstringList=newList()更愚蠢的了;表达力强,语法简洁。简单的事情,比如省略括号、数组和散列文字等(结合鸭子类型,你会得到string_list=[]这显然更好)。所有的

随机推荐