1. const  and let

除了函数作用域之外,增加了块级作用域和常量。const 定义的绑定不可以修改,let定义的绑定在{ }不能访问。之前的 var 如果不在函数作用域内,相当于定义了一个全局变量,并且有变量提升(将变量的声明提升至所在函数的最前面)。

2. 数组函数

新增了一些数组处理函数,可以更加方便的对数组进行操作。

let a = Array.foreach( functionA )  functionA 会对函数的每一元素进行操作,a = undefined。

let b = Array.map( functionA ), 与foreach 的不同的是map 会返回一个新的数组。

let c = Array.filter( functionA ), 与map不同的是,filter 返回的数组Array 的一个子集。

let d = Array.find( functuonB ) , 找到符合条件的值立马返回。

let e = Array.every( checkFunc) , check 每一个 element , all ok 则 返回 true, else return false.

let g = Array.some( checkFunc), if any element passes the check, retrun ture, else return false.

let  h = Array.reduce(function, initArgument), 提供操作和初始值函数,最终返回一个值。

3. 箭头函数

()=> {}    -- 参数函数体。当参数只有一个,函数体只有一行时可以写成 a => a*a的形式,省略()和{},其中a*a为函数的返回值。

与之前函数不同,箭头函数不会绑定this,arguments,super等局部变量,所有涉及到它们的引用都会沿着向上查找的方式在外层查找。

所以箭头函数不能用 apply,call,bind来绑定函数内部的this。

按词法作用域,Lexical Scoping just means that it uses  this from the code that contains the Arrow Function.。即从包含箭头函数的上下文作用域里去查找this。

而用 function 定义的函数,则this实际上是在函数被调用时发生绑定,它指向什么完全取决于函数在哪里被调用。

4.类

es6 中的类实际上原型继承的语法糖,constructor就是构造函数,创建一个对象,而在类中添加函数,就是在对象的原型链上添加方法。

5. 增强的对象字面量

<1> 可以引用上下文作用域中的变量

<2> 直接定义方法

<3> 定义动态属性

const color = 'red'
const point = {
x: ,
y: ,
color,
toString() {
return 'X=' + this.x + ', Y=' + this.y + ', color=' + this.color
},
[ 'prop_' + ]:
}

6.模板字符串

直接在字符串中使用变量,避免使用 + 来连接变量。

function hello(firstName, lastName) {
return `Good morning ${firstName} ${lastName}!
How are you?`
}

7.默认函数参数

默认指定函数参数的默认值,当传入参数的时候会覆盖默认值。

function sort(arr = [], direction = 'ascending') {
console.log('I\'m going to sort the array', arr, direction)
}

8.解构和剩余操作符

// 解构
var array = ['red', 'blue', 'green']
var copyOfArray = [...array] //rest opoerator
function printColors(first, second, third, ...others) {
console.log('Top three colors are ' + first + ', ' + second + ' and ' + third + '. Others are: ' + others)
}

9. 从数组中提取需要的值,传入变量,也包括对象。

 let [first, , third] = [,,];
let obj = {a:100,b:200};
let {a}= obj;

10. promise

promise.then().catch();

总结

1.构造函数可能会被类修饰符替代。

2. 函数作为子程序,可能会被箭头函数替代。

3.  函数作为对象方法,可能会被对象方法定义。

10 个常用的 es6 特性的更多相关文章

  1. 最常用的ES6特性(转)

    最常用的ES6特性 let, const, class, extends, super, arrow functions, template string, destructuring, defaul ...

  2. 最常用的ES6特性

    遇到了要写出es6新特性的题目,所以查阅了资料来总结一下,点击查看原文. 进入正题,最常用的ES6特性有:let, const, class, extends, super, arrow functi ...

  3. 【ES6】最常用的es6特性(一)

    参考链接: http://www.jianshu.com/p/ebfeb687eb70 http://www.cnblogs.com/Wayou/p/es6_new_features.html 1.l ...

  4. 【ES6】最常用的es6特性(二)

    1.for of 值遍历 for in 循环用于遍历数组,类数组或对象,ES6中新引入的for of循环功能相似,不同的是每次循环它提供的不是序号而是值. var someArray = [ &quo ...

  5. 常用es6特性归纳-(一般用这些就够了)

    之前做vue和react的时候,发现文档什么的最新版本都建议用es6写法,对es6友好度更高,加之现在es6也越来越普及,兼容性问题直接用babel转码就好了,特别方便,于是我开始学着用es6写代码, ...

  6. ES6系列之项目中常用的新特性

    ES6系列之项目中常用的新特性 ES6常用特性 平时项目开发中灵活运用ES6+语法可以让开发者减少很多开发时间,提高工作效率.ES6版本提供了很多新的特性,接下来我列举项目中常用的ES6+的特性: l ...

  7. 9个常用ES6特性归纳(一般用这些就够了)

    ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了.它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应 ...

  8. ES6特性

    一.ES6特性: let, const, class, extends, super, arrow functions, template string, destructuring, default ...

  9. 开发中常用的es6知识

    结合实际开发,开发中常用的es6的知识: 1.新增let和const命令: ES6 新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效: cons ...

随机推荐

  1. 编辑器vi命令

    代码: # vi + 文件名 //将光标放在文档最下面 进入编辑器后: i:插入 x:删除 w:保存 q:退出不保存 q!:强制退出不保存 wq:保存并退出

  2. svn: Checksum mismatch while updating 错误

    最近使用svn客户端更新代码的时候出现 Checksum mismatch while updating 的错误 解决办法 在出错文件的目录下,用update to reversion , 先选onl ...

  3. Sass 颜色函数

    /* * Sass 颜色函数 * RGB 颜色函数 * 1. rgb($red,$green,$blue):根据红.绿.蓝三个值创建一个颜色: * rgb(200,40,88) //根据r:200,g ...

  4. mysql 服务端事务和客户端事务对比分析

    之前做mysql事务测试的时候都是在mysql服务端存储过程里面包含事务. 例如: CREATE DEFINER=`root`@`localhost` PROCEDURE `Test`(out deb ...

  5. loj6102 「2017 山东二轮集训 Day1」第三题

    传送门:https://loj.ac/problem/6102 [题解] 贴一份zyz在知乎的回答吧 https://www.zhihu.com/question/61218881 其实是经典问题 # ...

  6. Spring Boot中配置文件application.properties使用

    一.配置文档配置项的调用 启动后在浏览器直接输入http://localhost:18080/user/test,就直接打印出配置文件中的配置内容. 二.绑定对象bean调用 有时候属性太多了,一个个 ...

  7. Vue-$emit的用法

    1.父组件可以使用 props 把数据传给子组件.2.子组件可以使用 $emit 触发父组件的自定义事件. vm.$emit( event, arg ) //触发当前实例上的事件 vm.$on( ev ...

  8. ftrace 简介【转】

    转自:http://www.ibm.com/developerworks/cn/linux/l-cn-ftrace/index.html Trace 对于软件的维护和性能分析至关重要,ftrace 是 ...

  9. Tabular DataStream protocol 协议

    Tabular DataStream protocol 协议 Freetds 创建过程 https://wenku.baidu.com/view/2076cbfaaef8941ea76e0576.ht ...

  10. Oracle 内存管理

    --内存分配建库时可以先分配系统内存的50%-80%给Oracle,后期根据业务再进行调整.SGA.PGA分配比例:OLTP:SGA %80 , PGA %20OLAP:SGA %50 , PGA % ...