前言:ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。如今,越来越多人尝试使用ES6语法来规范代码,因为,ES6的出现大大简化了前端的代码和书写习惯,使得我们在工作学习中更加高效、便捷、稳定。

正文:在学习ES6的语法过程中,我个人是参考着《ECMAScript 6 入门第三版》,书中关于ES6的介绍和总结非常详尽、明了,给人清晰的思路。那么ES6和ES6到底有哪些区别,换句话说,ES6究竟有哪些新特性值得我们学习,那么我们拭目以待吧。

(1).let、const

ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。const声明一个只读的常量。

一旦声明,常量的值就不能改变。但是const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,就完全不能控制了。

由于存在变量提升,在执行function函数之前,所有变量都会被提升, 提升到函数作用域顶部.为了解决这个麻烦,let和const很好的解决了这一问题。因为他们是块级作用域, 在代码块(用{}表示)中使用letconst声明变量, 该变量会陷入暂时性死区直到该变量的声明被处理。没有了变量提升,let和const必须先声明后使用。

(2).Map()

在JavaScript对象中,键值对中的键必须是字符串类型,但实际上Number或者其他数据类型也是合理的,为此,ES6中引入了新的数据类型Map。

(3).Set()

Set()是有序列表的结合,而且是没有重复的,因此Set()对象可以用于数组的去重。

let set = new Set([1,2,3,4,4,4,4,4]);
console.log( Array.from(set) ); //输出:[ 1, 2, 3, 4 ]

Set中包含的方法,add()、has、delete()、clear()

Set也能用来保存NaN和undefined, 如果有重复的NaN, Set会认为就一个NaN(实际上NaN!=NaN);实例Set以后的对象拥有这些属性和方法

    属性
    Set.prototype
    Set.prototype.size
    方法
    Set.prototype.add()
    Set.prototype.clear()
    Set.prototype.delete()
    Set.prototype.entries()
    Set.prototype.forEach()
    Set.prototype.has()
    Set.prototype.values()
    Set.prototype[@@iterator]()

(4).iterable

引入iterable的目的是Map和Array无法像Array通过下标遍历,但是可以通过for...of解决这个问题。

(5).for...of(迭代器)

(6).箭头函数

定义:ES6箭头函数结构为    X => X*X

等价:function(X){return X*X}

(7).Spread / Rest 操作符

(8).解构赋值

(9).允许在对象中使用 super 方法

(10).class

(11).模版字符串(template string),使用 ` ` (反引号作为标识):

既可以当作普通字符串使用,又可以用来定义多行字符串,还可以在字符串中嵌入变量。

//普通字符串、嵌入变量
$(`.content li:eq(${index}) .dataItem`).css("background", "#DBDBDB");
//多行字符串:提示的内容就是按照断开的分行
alert(`Li mei is a beautiful girl,
she is  so funny!`)

如果遇到特殊的字符 比如`,则需要在前面加转义字符\

`\`` === "`" // --> true

(12).Proxy

(12).Symbol

Symbol是ES6中的一个新特性,所有拥有[Symbol.iterator]()方法的对象被称为 可迭代的

(13).Promise

(14).async函数

(15).二进制和八进制字面量

(16).keys,values,entries

ES6 提供三个新的方法 —— entries(),keys()和values()。 用于遍历数组。它们都返回一个遍历器对象,可以用for...of循环进行遍历,唯一的区别是keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历。

for (let index of ['小明', '小红'].keys()) {
console.log(index);
}
// 0
// 1
for (let item of ['小明', '小红'].values()) {
console.log(item);
}
// '小明'
// '小红'
for (let [index, item] of ['小明', '小红'].entries()) {
console.log(index, item);
}
// 0 "小明"
// 1 "小红"

(17).ES6 声明变量的六种方法:

var、function、let、const、class、import ====>> 详情请点击

在ES5中,JavaScript是没有块级作用域的,如果在块内使用var声明一个变量,它在代码块外面仍旧是可见的。ES6规范给开发者带来了块级作用域,let和const都添加了块级作用域,使得JS更严谨和规范。

(18).ES6 数组方法flat()

flat(n)将每一项的数组偏平化,n默认是1,表示扁平化深度.意思是可以利用ES6的flat()将多维数组变成一维数组。

ES6 新特性(深入浅出ES6—阮一峰)相关推荐

  1. Longstick的学习周记——ES6新特性

    Longstick的学习周记--ES6新特性 前言 ES6新特性 1. let 和 const let关键字 const 关键字 2. 模块字符串\` \` 3. 解构 4. 函数的参数默认值 5. ...

  2. ES6新特性----面试

    ES6新特性 关键字 let关键字 const关键字 解构赋值 变量的解构赋值 数组的解构赋值 对象的解构赋值 字符串的解构赋值 数值和布尔值的解构赋值 函数参数的解构赋值 用途 模板字符串 箭头函数 ...

  3. javascript ES6 新特性之 扩展运算符 三个点 ...

    对于 ES6 新特性中的 ... 可以简单的理解为下面一句话就可以了: 对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中. 作用类似于 Object.assign() ...

  4. ES6新特性(函数默认参数,箭头函数)

    ES6新特性之 函数参数的默认值写法 和 箭头函数. 1.函数参数的默认值 ES5中不能直接为函数的参数指定默认值,只能通过以下的变通方式:   从上面的代码可以看出存在一个问题,当传入的参数为0或者 ...

  5. ES6新特性之了解ES6以及其发展历史

    ES6 新特性 现在使用主流的前端框架中,如ReactJS.Vue.js.angularjs等,都会使用到ES6的新特性,作为一名高级工程师而言,ES6也就成为了必修课,所以本套课程先以ES6的新特性 ...

  6. es6 获取对象的所有值_前端开发必备 - ES6 新特性之 Set和Map数据结构

    往期回顾: 前端开发必备 - ES6 新特性之 let 和 const 命令 前端开发必备 - ES6 新特性之 变量的解构赋值 前端开发必备 - ES6 新特性之 字符串的拓展 前端开发必备 - E ...

  7. html5 跳转参数不显示_HTML5、CSS3、ES6新特性总结

    前言:HTML5.CSS3.ES6新特性,可以说是基础前端的面试的必考题了,以下是关于新特性的基本总结. HTML5: 语义化的区块和段落元素:<section>,<article& ...

  8. 尚硅谷es6新特性笔记

    尚硅谷es6新特性笔记 一.let与const let的变量声明以及声明特性 const的变量声明以及声明特性 const.let.var 三者之间的区别 二.变量解构赋值 三.模板字符串 四.对象的 ...

  9. lsdyna如何设置set中的node_list_如何快速掌握es6+新特性及核心语法?

    国庆刚刚结束,我们开始一波新的学习进程吧. ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.作为前端必备技能,我们来快速开始吧 接 ...

  10. ES6新特性16-Class

    ES6新特性16-Class 文章目录 ES6新特性16-Class 一.Class介绍和初体验 二.class静态成员 三.构造函数继承 四.子类对父类方法的重写 五.get和set 一.Class ...

最新文章

  1. 数通手稿留档——ISIS
  2. 通过访问列表实现MAC地址绑定,实现包过滤
  3. base64编码 vba_VB VBA ASP 可通用的基于Base64进行加密和解密的函数
  4. Redis入门教程(一)
  5. Database之SQLSever:T-SQL数据语言操作(数据定义语句DDL、数据操作语句DML、数据控制语句DCL、其他基本语句、流程控制语句、批处理语句)概念及其相关案例之详细攻略
  6. python 直线过滤掉不在边缘上的点_不存在所谓的机器学习平台
  7. .net Api 接口调用 增删改查
  8. 解决:本地计算机上的MySQL80服务启动后停止,某些服务在未由其他服务或者程序使用时将自动停止
  9. 股票历史数据-历史数据股票工具
  10. 《21天学通C语言》
  11. 下载官方 Win11、Win10 镜像 ISO 的方法
  12. unity 制作的app发布到andriod手机
  13. Excel公式向导,详细演艺多条件求平均值的操作
  14. 网站社交登录之微博登录
  15. NXP JCOP系列芯片卡特点
  16. FPGA(二)串口通信
  17. 华为荣耀平板5怎么样_荣耀平板5配置如何?荣耀平板5优缺点评测
  18. 代码中终止python程序
  19. jdk的环境变量,javac不是内部命令,也不是可运行的程序”的解决
  20. SGX技术的分析与研究 学习笔记

热门文章

  1. Html5微信小游戏怎么运行,怎么用pixi.js开发微信小游戏
  2. 主流浏览器兼容性问题与解决方案
  3. 《白帽子讲web安全》第1章 我的安全世界观
  4. 基于51单片机的交通灯控制设计
  5. SVM支持向量机-——希尔伯特空间解释
  6. 国内主流短信验证码平台收费价格对比「一」:阿里云、梦网云通讯、容联云通讯、互亿无线
  7. 【layUI时间控件使用】:按钮显示时间并放到输入框
  8. 象棋人机对战中所用的极大极小值-alpha-beta剪枝算法介绍
  9. 《学会提问——批判性思维指南》完整读书笔记
  10. 某公司基于FineBI数据决策平台的试运行分析报告