ES6(2015)新特性:类、模块化、箭头、函数参数默认值、模板字符串

更新日期: 2021-04-11阅读: 1.1k标签: 特性

ES6带来了特别多的新特性,新方法。对我们前端工作人员的编码习惯和编码模式都带来了翻天覆地的变化。

ES6是ECMA Script的第六个大版本,从ES2015开始,ECMA Script不再使用版本号作为更新标志,而是改成年份来标记,但是大家还是愿意用ES6来称呼ES2015,甚至很多文章对后期更新的版本更新内容也一概用ES6来进行指代,比如异步终极解决方案async await 其实是ES2017的新增内容,但是很多科普文章还是将其称为ES6的新特性,所以大家一定要分清楚哦,看到ES6要知道他是单指ES2015还是泛指ES2015之后所有的新内容~


1. 类(class)

ES6引入了Class(类)这个概念,作为对象的模板,通过class关键字,可以定义类。基本上,ES6的class可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。上面的代码用ES6的“类”改写,就是下面这样。

class Man {
  constructor(name) {
    this.name = 'fly63前端';
  }
  console() {
    console.log(this.name);
  }
}
const man = new Man('fly63前端');
man.console(); // fly63前端


2. 模块化(ES Module)

ES6模块在编译时就能确定模块的依赖关系,以及输入和输出的变量。这种加载称为“编译时加载”或者静态加载,效率更高,使静态分析成为可能,比如引入宏和类型检验功能。这也导致了没法引用ES6模块本身,因为它不是对象。
ES6模块自动采用严格模式。尤其需要注意this的限制,顶层的this指向undefined。
ES6模块通过export命令规定模块的对外接口,通过import命令输入其它模块提供的功能。

// 模块 A 导出一个方法
export const sub = (a, b) => a + b;
// 模块 B 导入使用
import { sub } from './A';
console.log(sub(1, 2)); // 3


3. 箭头(Arrow)函数

ES6可以使用“箭头”(=>)定义函数,注意是函数,不要使用这种方式定义类(构造器)。

const func = (a, b) => a + b;
func(1, 2); // 3


4. 函数参数默认值

在ES6如果函数参数没有值或未定义的,默认函数参数允许将初始值初始化为默认值。

function foo(age = 25,){ // ...}


5. 模板字符串

模板字面量是允许嵌入表达式的字符串字面量。你可以使用多行字符串和字符串插值功能。它们在ES2015规范的先前版本中被称为“模板字符串”。

const name = 'fly63前端';
const str = `Your name is ${name}`;


6. 解构赋值

解构赋值是对赋值运算符的扩展。

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

在代码书写上简洁且易读,语义更加清晰明了;也方便了复杂对象中数据字段获取。

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


7. 延展操作符

延展操作符 = ...可以在函数调用/数组构造时,将数组表达式或者string在语法层面展开,还可以在构造对象时,将对象表达式按key-value的方式展开。

let a = [...'hello world']; // ["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d"]


8. 对象属性简写

在ES6中允许我们在设置一个对象的属性的时候不指定属性名。对象中直接写变量,非常简洁。

const name='fly63前端',
const obj = { name };


9. Promise

Promise 是异步编程的一种解决方案,其实是一个构造函数,自己身上有all、reject、resolve这几个方法,原型上有then、catch等方法。

Promise.resolve().then(() => { console.log(2); });
console.log(1);
// 先打印 1 ,再打印 2


10. let和const

ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: let 和 const。 let 声明的变量只在 let 命令所在的代码块内有效。

const 声明一个只读的常量,一旦声明,常量的值就不能改变。

let name = 'fly63';
const arr = [];


链接: https://www.fly63.com/article/detial/10192

CSS新特性contain,控制页面的重绘与重排

contain 属性允许我们指定特定的 DOM 元素和它的子元素,让它们能够独立于整个 DOM 树结构之外。目的是能够让浏览器有能力只对部分元素进行重绘、重排,而不必每次都针对整个页面。

Html5、Css3、ES6的新特性

Html5的新特性语义化标签:有利于SEO,有助于爬虫抓取更多的有效信息,爬虫是依赖于标签来确定上下文和各个关键字的权重。表单新特性,多媒体视频(video)和音频(audio)

ES6新特性--var、let、const

var不存在块级作用域,具有变量提升机制。 let和const存在块级作用域,不存在变量提升。在同一作用域内只能声明一次。const在声明时需要赋值且无法修改,但如果常量是对象,则对象的属性可以修改。

Js即将到来的3个新特性

Optional Chaining(可选链式调用);Nullish coalescing(空值合并);Pipeline operator(管道运算符)通过三个函数对字符串进行处理;

Angular 8的新特性介绍

在今天早些时候Angular团队发布了8.0.0稳定版。其实早在NgConf 2019大会上,演讲者就已经提及了从工具到差分加载的许多内容以及更多令人敬畏的功能。下面是我对8.0.0一些新功能的简单介绍,希望可以帮助大家快速了解新版本

使用 React 要懂的 Js特性

与我使用的其他框架相比,我最喜欢 React 的原因之一就是它对 JavaScript 的暴露程度。没有模板DSL( JSX 编译为合理的 JavaScript),组件 API 只是通过添加 React Hooks 变得更简单,并且该框架为解决的核心 UI 问题提供非常少的抽象概念

ES2019 新特性汇总

最近 ECMAScript2019,最新提案完成:tc39 Finished Proposals,我这里也是按照官方介绍的顺序进行整理,如有疑问,可以查看官方介绍啦~另外之前也整理了 《ES6/ES7/ES8/ES9系列》,可以一起看哈。

Js的用途和特性

JavaScript 最初的目的是为了“赋予网页生命”。这种编程语言我们称之为脚本。它们可以写在 HTML 中,在页面加载的时候会自动执行。脚本作为纯文本存在和执行。它们不需要特殊的准备或编译即可运行。

十个超级实用的 JS 特性

你可能刚上手 JavaScript,或者只是曾经偶尔用过。不管怎样,JavaScript 改变了很多,有些特性非常值得一用。 这篇文章介绍了一些特性,在我看来,一个严肃的 JavaScript 开发者每天都多多少少会用到这些特性

解密HTTP/2与HTTP/3 的新特性

HTTP/2 相比于 HTTP/1.1,可以说是大幅度提高了网页的性能,只需要升级到该协议就可以减少很多之前需要做的性能优化工作,当然兼容问题以及如何优雅降级应该是国内还不普遍使用的原因之一。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!