简单谈谈ES6的六个小特性


Posted in Javascript onNovember 18, 2016

前言

本文主要针对ES6做一个简要介绍,也许你还不知道ES6是什么, 实际上, 它是一种新的JavaScript规范。在这个大家都很忙碌的时代,如果你想对ES6有一个快速的了解,那么请继续往下读,去了解当今最流行的编程语言JavaScript最新一代的六大特性。

过去一年ES6带来了十足的进步,下面是6个我最喜欢的JS新增特性。

一、Object[key]

有时候不能在对象变量声明时设置所有的key/value,所以得再声明之后添加key/value。

let myKey = 'key3';
let obj = {
  key1: 'One',
  key2: 'Two'
};
obj[myKey] = 'Three';

往好的说这有点不方便,往坏的说这种方式令人疑惑而且有点丑陋。

ES6提供给开发者一种更优雅的方式:

let myKey = 'variableKey';
let obj = {
  key1: 'One',
  key2: 'Two',
  [myKey]: 'Three' /* yay! */
};

开发者可以使用[]包裹变量从而使用一条语句完成所有的功能。

二、Arrow Functions

你不需要跟上ES6的所有改变,箭头函数已经是许多讨论的话题并且也给JS开发者带来了一些困惑。即使我可以写很多博文来说箭头函数的特点,但是我想指出箭头函数是如何提供一个为简单函数压缩代码的方法。

// Adds a 10% tax to total
let calculateTotal = total => total * 1.1;
calculateTotal(10) // 11

// Cancel an event -- another tiny task
let brickEvent = e => e.preventDefault();
document.querySelector('div').addEventListener('click', brickEvent);

无functions和return关键词,有时甚至不需要添加(),箭头函数为写函数提供了一种简短的代码书写方式。

三、find/findIndex

JS为开发者提供了Array.prototype.indexOf方法来获取数组中的指定元素下标,但是indexOf并没有提供一个根据判断条件来获取指定元素的方法,find和findIndex两个方法提供了取出第一个满足计算条件的元素和下标。

let age = [12,19,6,4];

let firstAdult = ages.find(age => age >= 18); // 19
let firstAdultIndex = ages.findIndex(age => age >= 19); // 1

四、...扩展修饰符

扩展修饰符表示数组和可迭代对象在调用的时候应该拆分成单个参数:

// Pass to function that expects separate multiple arguments
// Much like Function.prototype.apply() does
let numbers = [9, 4, 7, 1];
Math.min(...numbers); // 1

// Convert NodeList to Array
let divsArray = [...document.querySelectorAll('div')];

// Convert Arguments to Array
let argsArray = [...arguments];

这个特定的另一个红利可以把可迭代对象(NodeList、arguments)变成真的数组,以前我们经常使用Array.from或其他方法实现的。

五、Template Literals

JS里多行字符起初通过+和```来完成的,但是都很难维护。许多开发者甚至一些框架使用<script>标签来容纳模板,然后使用DOM方法的outerHTML```来获取HTML字符。

ES6提供了Template Literals使用反引号来容易的创建多行字符串:

// Multiline String
let myString = `Hello

I'm a new line`;

//Basic interpolations
let obj = {x:1,y:2};

console.log(`Your total is: ${obj.x + obj.y}`); // Your total is 3

六、Default Argument Values

为函数参数提供默认值在服务端语言已经提供(python、php),现在JS也有此能力:

//Basic usage

function great( name = 'Anon' ){
  console.log(`Hello ${name}`);
}

great(); // Hello Anon!

//You can have a function too!

function greet( name = 'Anon',callback = function(){} ){
  console.log(`Hello ${name}!`);
  // No more "callback && callback()" (no conditional)
  callback();
}

// Only set a default for one parameter
function greet(name, callback = function(){}) {}

以上列出的6个特性就是ES6提供给开发者,当然还有许多特性。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
Dec 04 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
Dec 16 Javascript
jQuery入门介绍之基础知识
Jan 13 Javascript
谈谈javascript中使用连等赋值操作带来的问题
Nov 26 Javascript
常用的js验证和数据处理总结
Aug 02 Javascript
js中new一个对象的过程
Feb 20 Javascript
vue动态改变背景图片demo分享
Sep 13 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
Sep 20 Javascript
JQuery事件委托原理与用法实例分析
May 13 jQuery
原生JavaScript创建不可变对象的方法简单示例
May 07 Javascript
js中复选框的取值及赋值示例详解
Oct 18 Javascript
vue-cli —— 如何局部修改Element样式
Oct 22 Javascript
jQuery post数据至ashx实例详解
Nov 18 #Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
Nov 18 #Javascript
基于jQuery的checkbox全选问题分析
Nov 18 #Javascript
JavaScript动态数量的文件上传控件
Nov 18 #Javascript
JS识别浏览器类型(电脑浏览器和手机浏览器)
Nov 18 #Javascript
Node.js 实现简单小说爬虫实例
Nov 18 #Javascript
基于jQuery的select下拉框选择触发事件实例分析
Nov 18 #Javascript
You might like
一个目录遍历函数
2006/10/09 PHP
php使用Jpgraph绘制柱形图的方法
2015/06/10 PHP
深入浅析Yii admin的权限控制
2016/08/31 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
2018/09/18 PHP
Avengerls vs KG BO3 第二场2.18
2021/03/10 DOTA
新浪的图片新闻效果
2007/01/13 Javascript
JavaScript 常用函数库详解
2009/10/21 Javascript
JSON.parse 解析字符串出错的解决方法
2010/07/08 Javascript
json对象转字符串如何实现
2012/12/02 Javascript
定义JavaScript二维数组采用定义数组的数组来实现
2012/12/09 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
2013/11/14 Javascript
js获取时间(本周、本季度、本月..)
2013/11/22 Javascript
jquery对单选框,多选框,文本框等常见操作小结
2014/01/08 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
Bootstrap每天必学之前端开发框架
2015/11/19 Javascript
使用微信小程序开发前端【快速入门】
2016/12/05 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
2017/08/09 jQuery
基于node打包可执行文件工具_Pkg使用心得分享
2018/01/24 Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
2018/11/15 Javascript
JS闭包原理与应用经典示例
2018/12/20 Javascript
详解vue 不同环境配置不同的打包命令
2019/04/07 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
[44:09]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第二局
2016/02/25 DOTA
python处理中文编码和判断编码示例
2014/02/26 Python
在Python3中初学者应会的一些基本的提升效率的小技巧
2015/03/31 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
2016/11/02 Python
Python第三方Window模块文件的几种安装方法
2018/11/22 Python
一封普通求职者的求职信
2013/11/20 职场文书
大学生找工作求职信
2014/07/09 职场文书
工作能力自我评价2015
2015/03/05 职场文书
2015年中学团委工作总结
2015/07/22 职场文书
校友会致辞
2015/07/30 职场文书
python某漫画app逆向
2021/03/31 Python
spring cloud 配置中心native配置方式
2021/09/25 Java/Android