一、简介

本文将对es6的最佳特性进行分享和讲解。es6也称ES6/ECMAScript2015,在2015年诞生,但是目前实际开发中还很多用的是ES5(2009年),原因就是很多的浏览器不支持新的语法,对新的语法支持率比较低,所有要想用es6语法,就得用编译器,目前用的比较多的是babel,可以作为独立的编译器使用,也可以引入到项目当中,用webpack或者gulp等一些工具,具体用法可以看下官方文档。

二、特性介绍

本文将对一下特性进行说明:

1、默认参数以及箭头函数;

2、导出导入模块

3、类Class

4、let 跟 const

5、模板文本

6、多行字符串

7、Promises

8、解析赋值

9、生成器(Generators)

三、特性具体介绍

1、默认参数以及箭头函数

1.1、默认参数

以前我们写函数定义默认参数的时候是这样写:

function aaa(num){
var num = num || 1;
console.log(num)
}

那么,在es6中可以这么写,直接写在函数的括号上边:

function aaa(num=10){
var num = num;
console.log(num)
}

1.2、箭头函数

以前我们写闭包或者一些链函数调用的时候,this的指向很困扰我们,很容易就会造成变化,经常需要在使用之前先定义在一个变量里,比如var self = this;然后再使用。

有了es6的箭头函数,我们就不用再担心这个问题了,告别那些that = this,self = this或者bind(this)这种写法。我们直接可以这样写,函数里的this指向不变。

$('.btn').click((e) =>{
this.submit();
})

2、导入导出模块

导入导出模块现在用的比较多了,在ES5中,引入依赖需要用require来引入,而在es6中,用export来导出,import导入,很方便使用。

单个文件:

//导出modleName.js
export default{
name:'smile'
} //导入
import modleName from './modleName.js'

多个文件:

export var name = "smile";
export function abc(){} import {name,abc} from 'module'
//或者
import * as services from 'module'

3、类(class)

在Java等oop面向对象编程中,你会经常看到class这个关键字,但是在es5中,是没有用class去声明类的,然后我们惊喜的发现在es6中,可以用class来声明一个类了。看以下代码,我们声明了一个Base类,然后定义了一个constructor和getName方法,类属性写在constructor方法里边,类里边只能定义方法。

class Base{
constructor(){
this.name = 'smile'
}
getName(){
console.log(this.name)
}
}

如果要继承父类,可直接使用关键字extends继承

class ChildBase extends Base{
}

调用父级的构造函数,可以使用super()方法。

4、let 跟const

之前我们声明变量都是用var ,当在一个函数中存在很多变量的情况下就会容易出现混淆或者覆盖掉,所有引入的新的变量声明方式let 以及常量const。

let 和 const都是块级作用域,那么,什么是块级作用域呢?

两种情况:

在函数内部;

在一个代码块中;

简单来说就在在一个花括号{}里边就是一个快级作用域。

function aaa(flag){
let num = 0;
if (flag) {
let num = 10;
}
console.log(num)
}
aaa(true)//输出0

用const 声明的常量不能改变,只能赋值一次。

5、模板文本

相信大家都使用过拼接的方式去拼接一下字符串跟变量,比如:

var name = "your are "+name+"is";

在es6中,我们就可以使用心得语法${name}的方式去赋值变量,把变量放到花括号里就可以了

var name = "Your are is ${name} is ";

是不是很酷啊!

6、多行字符串(Multi-line Strings)

在es5中,当需要表示多行字符串的时候,我们这样做:

var strings = 'abc'
+'ndf';

在es6中,当表示多行字符串的时候,我们可以这样做,直接用两个反引号包起来就可以。

var strings = `abc
ndf`;

7、promise

所谓Promise,就是一个对象,经常用于异步操作当中,有了Promise可以用同步的流程去执行一些异步操作。具体操作这里不做详解,看参照官方文档。

8、解析赋值

在es6中可以一次对data对象属性一次性赋值,比如:

data={

  name:‘abc’,

  age:13

}

var {name,age} = data;

9、生成器(Generators)

生成器( generator)是能返回一个迭代器的函数。生成器函数也是一种函数,最直观的表现就是比普通的function多了个星号*,在其函数体内可以使用yield关键字,有意思的是函数会在每个yield后暂停。

四、这里对es6中的只要特性作了说明,有些地方说的不是很详细请大家多去看下文档,结束不足或者错误的地方会后续更正,谢谢大家。

Es6主要特征详解的更多相关文章

  1. es6语法详解

    什么是ECMAScript? ECMAScript是浏览器脚本语言的规范,而我们熟知的js语言,如JavaScript则是规范的具体实现.es6就好比Java的jdk. 一.es6语法详解:let声明 ...

  2. ES6 modules 详解

    概述 历史上,JavaScript 一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来.其他语言都有这项功能,比如 Ruby 的require.Pytho ...

  3. ES6 Promise 详解

    一.概念 Promise,从语法上来讲,它是一个对象,是一个构造函数,可以获取 异步操作 的信息. 简单来讲,就是用同步的方式写异步代码,用来解决回调问题. 二.特点 Promise 对象有两个特点: ...

  4. 写GULP遇到的ES6问题详解

    Gulp.js 是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务.最近复习一下gulp一些基本的写法,在写了一些简单的uglify,rename,concat,clean的处理之 ...

  5. ES6 Promise详解

    前言 本文主要是对Promise本身的用法做一个全面解析而非它的原理实现,如果你对Promise的用法还不是很熟悉或者想加深你对Promise的理解,我相信这篇文章一定会帮到你. 首先让我们先了解一下 ...

  6. ES6,ES2105核心功能一览,js新特性详解

    ES6,ES2105核心功能一览,js新特性详解 过去几年 JavaScript 发生了很大的变化.ES6(ECMAScript 6.ES2105)是 JavaScript 语言的新标准,2015 年 ...

  7. [js高手之路] es6系列教程 - 对象功能扩展详解

    第一:字面量对象的方法,支持缩写形式 //es6之前,这么写 var User = { name : 'ghostwu', showName : function(){ return this.nam ...

  8. [js高手之路] es6系列教程 - 迭代器,生成器,for...of,entries,values,keys等详解

    接着上文[js高手之路] es6系列教程 - 迭代器与生成器详解继续. 在es6中引入了一个新的循环结构for ....of, 主要是用来循环可迭代的对象,那么什么是可迭代的对象呢? 可迭代的对象一般 ...

  9. JavaScript ES6 新特性详解

    JavaScript ES6 带来了新的语法和新的强大功能,使您的代码更现代,更易读 const ,  let and var 的区别: const , let 是 ES6 中用于声明变量的新关键字. ...

随机推荐

  1. 增加tomcat的缓存

    起因是我做了一个批量压缩图片的功能,在服务器上跑这个功能的时候,发现服务器有警告.警告的内容大概如下.  XX....  to the cache because there was insuffic ...

  2. linux(ubuntu) 搭建java程序运行环境

    一:简介 ubuntu 系统的和linux差不多,我们需要在系统上搭建java程序运行环境,需要安装jdk,mysql这两个软件,tomcat是绿色版,直接通过taz -zxvf tomcat 就可以 ...

  3. J2EE: JCA (Java Connector Architecture) [转]

    JCA (J2EE 连接器架构,Java Connector Architecture)是对J2EE标准集的重要补充.因为它注重的是将Java程序连接到非Java程序和软件包中间件的开发.连接器特指基 ...

  4. rwx读写执行对文件和目录的意义

    文件 目录 r 查看 列出目录内容 w 修改 在目录内新建删除文件 x 执行 可以进入目录 对文件的删除权限是对文件所有目录的写权限 对目录-wx的权限,有写和执行权限,既可以在目录内创建删除文件,可 ...

  5. iOS知识点、面试题 之二

    最近面试,与大家分享一下,分三文给大家: 当然Xcode新版本区别,以及iOS新特性 Xcode8 和iOS 10 在之前文章有发过,感兴趣的可以查阅: http://www.cnblogs.com/ ...

  6. 创建access数据库表demo的封装

    1.创建类 public void CreateBiao(ADOX.Catalog catlog,ADOX.Table table) { //StuId Column(AutoIncrement ) ...

  7. bzoj 3571: [Hnoi2014]画框

    Description 小T准备在家里摆放几幅画,为此他买来了N幅画和N个画框.为了体现他的品味,小T希望能合理地搭配画与画框,使得其显得既不过于平庸也不太违和.对于第 幅画与第 个画框的配对,小T都 ...

  8. du 命令详解

    du : show disk usage  作用:统计目录或文件所占用磁盘空间的大小. 语法:du 参数 选项 参数: -a 为每个制定文件显示磁盘使用情况, 或者为目录中每个文件显示各自磁盘使用情况 ...

  9. 实体框架(Entity Frmaework)简介

    l简称EF  NH l与Asp.Net MVC关系与ADO.NET关系 lADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapp ...

  10. MySQL 的调节和优化的提示

    MySQL 服务器硬件和操作系统调节: 1. 拥有足够的物理内存来把整个InnoDB文件加载到内存中——在内存中访问文件时的速度要比在硬盘中访问时快的多.2. 不惜一切代价避免使用Swap交换分区 – ...