实用的几个JS新特性(es 2016)
在Chrome 55下测试,可用。
1.箭头函数(arrow function)
以前写的匿名函数是这样的 function(){},
现在可以简单写成这样()=>{}
如果直接return,没有复杂的过程,甚至可以写成 x=>x+1,实际上相当于
function (x){
return x+1
}
箭头函数有一个特点,就是this无法更改,箭头函数的this就是当前上下文的this不会变,比如以前setTimeout,需要用外面的this,各种不方便,需要自己去想办法改变this,现在不用了,用箭头函数,this就是setTimeout的上下文的this。
var a={b:function(){setTimeout(()=>{console.log(this)},100)}}
a.b() //{b:func}
var a={b:function(){setTimeout(function(){console.log(this)},100)}}
a.b() // window
2.数组的includes,filter
['a','b'].includes('a') // true
['a','b'].includes('c') // false
C#的Linq,查询数据非常方便,现在有了箭头函数,JS也能看起来有点linq的影子了,比如下面这个例子
var a = [1,2,3,4,5,6,7,8]
var b = a.filter(s=>s>5)
console.log(b) //[6,7,8]
3.幂运算的简化写法
Math.pow(x,y)可以简写成 x**y
Math.pow(3,3) // 27
3**3 //27
4.async和await可以试用了(从chrome 55开始)
async/await是用来取代设计糟糕,晦涩难懂的promise的。async/await是更理想的解决回调地狱的方案。async/await使得异步中的异常可以轻松的解决。比promise又显著的减少代码量。
5.字符串格式化(变量带入)
之前的JS,字符串标记仅有单引号和双引号,两者作用并无二致。
现在加入了新的字符串标记 ` ,撇号与单双引号的最大区别是可以在字符串中使用变量和表达式。
例如原来的 "The area of a circle radius 4 is " + Math.PI * 4 * 4 现在就可以写成
`The area of circle radius is ${Math.PI*4*4}`
把表达式写在${}中,即可将运算结果直接放到字符串里。
2019-01-07 Updated:
6.变量解构赋值(这里只说交换变量这种用法)
ES6加入了变量解构赋值的语法,会非常的方便,比如:
let [a,b,c] = [1,2,3] // 等价于a=1,b=2,c=3
于是以前的变量交换,就有了新的写法,以前需要用第三个变量来缓存结果,或者使用一种非常诡异且难以理解的N次或运算,现在不需要了,靠着新的解构赋值语法,只要一句话就能完成变量交换
var a=1,b=2;
[a,b] = [b,a];
console.log(a,b); // a == 2, b == 1
实用的几个JS新特性(es 2016)的更多相关文章
- ES6,ES2105核心功能一览,js新特性详解
ES6,ES2105核心功能一览,js新特性详解 过去几年 JavaScript 发生了很大的变化.ES6(ECMAScript 6.ES2105)是 JavaScript 语言的新标准,2015 年 ...
- Xcode 8 的 Debug 新特性 —- WWDC 2016 Session 410 & 412 学习笔记
Contents OverView Static Analyzer Localizability Instance Cleanup Nullablility Runtime Issue View De ...
- 使用 Polyfill 而不再是 bable 来实践js新特性
现状 我们想要用ES6 语法来写 JavaScript.然而由于我们需要兼容老版本的浏览器,那些浏览器不支持 ES6,我们需要解决这个问题. 有一个标准的做法是:写 ES6 代码 → 将所有代码编译成 ...
- 用 webpack 构建 node 后端代码,使其支持 js 新特性并实现热重载
https://zhuanlan.zhihu.com/p/20782320?utm_source=tuicool&utm_medium=referral
- atitit.js 各版本 and 新特性跟浏览器支持报告
atitit.js 各版本 and 新特性跟浏览器支持报告 一个完整的JavaScript实现是由以下3个不同部分组成的 •核心(ECMAScript)--JavaScript的核心ECMAScrip ...
- ES6:JavaScript 新特性
我相信,在ECMAScript.next到来的时候,我们现在每天都在写的JavaScript代码将会发生巨大的变化.接下来的一年将会是令JavaScript开发者们兴奋的一年,越来越多的特性提案将被最 ...
- es6的新特性--模板字符串
这几天简单看了一下深入浅出es6这本书,感觉特实用,学习了一个新特性---模板字符串在项目开发中,拼接字符串是不可缺少的,动态创建dom元素以及js操作数据都要拼接字符串,在es6出来之前,我们都通常 ...
- ES6、ES7、ES8、ES9、ES10新特性
ES6新特性(2015) ES6的特性比较多,在 ES5 发布近 6 年(2009-11 至 2015-6)之后才将其标准化.两个发布版本之间时间跨度很大,所以ES6中的特性比较多. 在这里列举几个常 ...
- 介绍Ext JS 4.2的新特性的《深入浅出Ext JS》上市
以用户为中心的时代,应用的界面外观变得越来越重要.然而,很多程序员都缺乏美术功底,要开发出界面美观的应用实属不易.Ext JS的出现,为广大程序员解决了这一难题.它有丰富多彩的界面和强大的功能,是开发 ...
随机推荐
- CentOS自带定时任务crontab
设置定时任务规则,crontab -e,如下示例为每一分钟执行一次脚本 在脚本中写入内容时需注意路径,可以写绝对路径,也可以按照如下形式 exepath=$(cd "$(dirname &q ...
- Java多线程(八)——join()
一.join()介绍 join() 定义在Thread.java中.join() 的作用:让“主线程”等待“子线程”结束之后才能继续运行.这句话可能有点晦涩,我们还是通过例子去理解: // 主线程 p ...
- Angularjs 过滤器使用
Filter:格式化数据 // HTML表达式: {{ filter_expression | filter : expression : comparator}} // JS表达式: $filt ...
- RPC通信原理(未完,先睡觉)
一 背景 OpenStack 各组件之间是通过 REST 接口进行相互通信,比如Nova.Cinder.Neutron.Glance直间的通信都是通过keystone获取目标的endpoint,即ap ...
- 【转】【强化学习】Deep Q Network(DQN)算法详解
原文地址:https://blog.csdn.net/qq_30615903/article/details/80744083 DQN(Deep Q-Learning)是将深度学习deeplearni ...
- ZooKeeper: 简介, 配置及运维指南
1. 概览 ZooKeeper是一个供其它分布式应用程序使用的软件, 它为其它分布式应用程序提供所谓的协调服务. 所谓的协调服务, 是指ZooKeeper的如下能力 naming 命名 configu ...
- C#代码中插入X86汇编
这两天在看C# SIMD相关的东西, 在爆栈上面搜到一段代码, 表示很震惊, 还是得贴出来… [UnmanagedFunctionPointer(CallingConvention.StdCall)] ...
- 第四次oo博客
论述测试与正确性论证的效果差异 单元测试利用测试者构造的测试用例来检查类或方法的正确性,一般来说所需要测试的用例是无穷多的,通过人为构造代表性的测试用例来尽量测试所有代码.测试的优点在于不易出错,只要 ...
- Sagheer and Nubian Market CodeForces - 812C (二分)
On his trip to Luxor and Aswan, Sagheer went to a Nubian market to buy some souvenirs for his friend ...
- 使用publisher模式控制频繁的UI输出,避免Winform界面假死
http://www.cnblogs.com/Charltsing/p/publisher.html 最近测试task并发任务的效率与线程池的区别,发现了另外一个问题.task建立任务的速度很快,输出 ...