JavaScript6里出现了哪些新语法、新特征?
ES5是2009年就出来的,目前来说在我写这篇文章的时候基本上ES6在浏览器上面还没有普及,不过Google浏览器是支持ES6语法的,谁让Google是美国生产的呢。。。
ES6现在使用的地方其实还是很多的,前端脚手架工具基本上都是支持ES6语法的,他们内部都有一套解析ES6的引擎。如vue、angular、react等。
想要了解ES6,学习ES6用法,最好还是去看写手册,文章都是根据手册官网来写的。ES6手册是 http://es6.ruanyifeng.com/
下面就看几个简单而实用的小特性。
1、模板文本
需要在字符串中加入变量时,通常做法就是使用字符串拼接,如
var param = 'b';
var str = 'a ' + param + ' c';
ES6中简单了,可以直接在字符串中添加变量
var str = `a ${param} c`;
注意,使用的是反引号 “,而不是 ”
2、多行字符串
例如想定义一个html代码片段,放在一行很难看,想用多行,还得用字符串拼接
var html =
'<div>' +
'<span>test</span>' +
'</div>';
一堆加号和引号,很麻烦
ES6中的反引号就能简单的解决
var html =
`<div>
<span>test</span>
</div>`;
非常清晰,里面还可以直接加变量,很方便
3、参数默认值
想给参数设置默认值时,需要我们手工处理,例如
function (width, height) {
var height = height || 300;
var width = width || 600;
...
}
ES6可以直接指定默认值
function (width=600, height=300) {
...
}
4、解构赋值
例如有一个json对象
var data = {name:'dys', age:1};
想取得name,age属性的话,需要分别获取
var name = data.name;
var age = data.age;
ES6可以自动获取并赋值
var {name, age} = data;
这几个示例只是比较简单的语法方面的便利特性,ES6还有一些比较深入的改进,例如
箭头函数、Promises、Classes ……
如何使用ES6
ES6是个新东西,兼容性还是个大问题,直接使用肯定是不可行了
还好,已经有了ES6的代码转换器,可以把ES6的代码转为ES5的代码(例如 babel),可以让我们使用ES6,又不担心兼容问题
我还没实际应用,不知道实际兼容效果是否有那么好
babel的官网 https://babeljs.io/
babel 示例
babel有gulp插件,下面是个简单的ES6代码转换示例
(1)安装环境
需要你的机器上已经装了nodejs、gulp
然后安装babel客户端
$ npm install -g babel-cli
在项目目录下安装相关插件
$ npm install gulp
$ npm install --save-dev gulp-babel
$ npm install --save-dev babel-preset-es2015
(2)测试脚本
用ES6方式写一个测试 a.js
var str = `hi ${name}`;
编写 gulpfile.js
var gulp = require("gulp");
var babel = require("gulp-babel");
gulp.task("default", function () {
return gulp.src("a.js")
.pipe(babel({presets: ['es2015']}))
.pipe(gulp.dest("dist"));
});
这个脚本的意思是使用babel把a.js编译并输出到dist目录下
(3)执行编译
在项目目录中执行
$ gulp
执行结束后,到dist目录下查看编译后的a.js
原文为 http://www.techug.com/post/javascript6-new-features.html
JavaScript6里出现了哪些新语法、新特征?的更多相关文章
- ES6、7、8、9新语法新特性
前言 如果你擅长这种扩散式学习方式,不妨再进一步温习一下整个 ES6 引入的新特性,笔者强烈推荐阮一峰老师的 ECMAScript 6 入门 一书. ES2018 引入的特性还太新,单在对 ES6 特 ...
- Qt 5.0+ 中 connect 新语法与重载函数不兼容问题的解决方法,以及个人看法
Qt 5.0+ 版本提供了 connect 的新语法,相比之前的语法新语法可以提供编译期检查,使用也更方便.可是使用过程中发现一个小问题——当某个 signal 和成员函数是重载关系的时候,qmake ...
- .NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法
开篇:在上一篇中,我们了解了自动属性.隐式类型.自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类.匿名方法以及常用的扩展方法.虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙.所以, ...
- .NET中那些所谓的新语法之四:标准查询运算符与LINQ
开篇:在上一篇中,我们了解了预定义委托与Lambda表达式等所谓的新语法,这一篇我们继续征程,看看标准查询运算符和LINQ.标准查询运算符是定义在System.Linq.Enumerable类中的50 ...
- 1、ASP.NET MVC入门到精通——新语法
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 在学习ASP.NET MVC之前,有必要先了解一下C#3.0所带来的新的语法特性,这一点尤为重要,因为在MVC项目中我们利用C#3.0的新特 ...
- 总结常见的ES6新语法特性
前言 ES6是即将到来的新版本JavaScript语言的标准,他给我们带来了更"甜"的语法糖(一种语法,使得语言更容易理解和更具有可读性,也让我们编写代码更加简单快捷),如箭头函数 ...
- 总结常见的ES6新语法特性。
前言 ES6是即将到来的新版本JavaScript语言的标准,他给我们带来了更"甜"的语法糖(一种语法,使得语言更容易理解和更具有可读性,也让我们编写代码更加简单快捷),如箭头函数 ...
- 第十六节:语法总结(3)(C#6.0和C#7.0新语法)
一. C# 6.0 新语法 1. 自动属性初始化可以赋值 /// <summary> /// 自动属性初始化 /// </summary> public class UserI ...
- ES6新语法之let关键字;有别于传统关键字var的使用
ES6新语法于2015年发布:而我这个前端小白在17年才接触到.惭愧惭愧!!不过到目前为止,似乎只有FireFox和Chrome对ES6的支持相对良好.不过既然人家ES6已经出来了,还是要跟上技术的潮 ...
- Node.js 全栈开发(二)——ES 201x 新语法的使用之基础篇
在讲 ES 2015 新语法之前,先来说一下为什么叫 ES.JavaScript 是这门语言的名称,它有一个为它制定标准化的组织 European Computer Manufacturers Ass ...
随机推荐
- js 巧妙去除数组中的重复项
1.代码如下: var toObject = function(a) { var o = {}; for (var i=0, j=a.length; i<j; i=i+1) { // 这里我调整 ...
- sqlserver索引维护(重新组织生成索引)
sqlserver索引的维护 1:查看索引碎片大于百分三十以上的索引 select object_id= object_id,indexid = index_id,partitionnum = par ...
- 设计模式:备忘录(Memento)模式
设计模式:备忘录(Memento)模式 一.前言 备忘录模式用于保存和恢复对象的状态,相信大家看过我前面的拙作就会想到原型模式也能保存一个对象在某一个时刻的状态,那么两者有何不同的呢?原型模式保存 ...
- 在ubuntu16.04上安装eclipse
在ubuntu16.04上安装eclipse 一.下载 首先我们需要安装jdk1.8及其以上,然后从官网:https://www.eclipse.org/downloads/上下载,需要注意 ...
- java时间操作工具类
import java.sql.Timestamp;import java.text.DateFormat;import java.text.ParseException;import java.te ...
- 杜比(dolby)自动关闭,windows10声音自动变小
电脑问题描述:2018.01.21 win10更新后,看视频电脑声音自动变小,重开机电脑声音正常,一会又会变小.找了很多网上的东西,实践后发现是杜比(dolby)自动关闭导致的,自动关闭的原因是因为切 ...
- Python之Dict和Set类型(入门5)
转载请标明出处: http://www.cnblogs.com/why168888/p/6407905.html 本文出自:[Edwin博客园] Python之Dict和Set类型 1. Python ...
- C# using、namespace使用注意事项
一.using 用法 1.引用命名空间. 如: using System; 2.自动释放对象使用的资源. 如: using (SqlConnection connection = new SqlCon ...
- hbase hfilev2
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u014393917/article/details/25508809 HFileV2文件 HFile ...
- miniui dataGrid detail grid
<div > <div id="vkhGrjx_grid" class="mini-datagrid" style="wi ...