简单谈谈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 相关文章推荐
node.js中的fs.mkdirSync方法使用说明
Dec 17 Javascript
jQuery无刷新分页完整实例代码
Oct 27 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
May 03 Javascript
js原生之焦点图转换加定时器实例
Dec 12 Javascript
详解angular中的作用域及继承
May 31 Javascript
Vue如何从1.0迁移到2.0
Oct 19 Javascript
基于Vue实现可以拖拽的树形表格实例详解
Oct 18 Javascript
详解在HTTPS 项目中使用百度地图 API
Apr 26 Javascript
React精髓!一篇全概括小结(急速)
May 23 Javascript
JS中的算法与数据结构之常见排序(Sort)算法详解
Aug 16 Javascript
vue中的v-if和v-show的区别详解
Sep 01 Javascript
在vue中使用Base64转码的案例
Aug 07 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
在同一窗体中使用PHP来处理多个提交任务
2006/10/09 PHP
php实现的Cookies操作类实例
2014/09/24 PHP
JavaScript 关键字屏蔽实现函数
2009/08/02 Javascript
浅析javascript闭包 实例分析
2010/12/25 Javascript
Javascript alert消息换行的方法
2013/08/07 Javascript
JavaScript中prototype为对象添加属性的误区介绍
2013/10/15 Javascript
Extjs根据条件设置表格某行背景色示例
2014/07/23 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
javascript正则表达式参数/g与/i及/gi的使用指南
2014/08/27 Javascript
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
JQuery自动触发事件的方法
2015/06/13 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
2015/11/24 Javascript
javascript html5 canvas实现可拖动省份的中国地图
2016/03/11 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
2016/05/24 Javascript
AngularJS基础 ng-model-options 指令简单示例
2016/08/02 Javascript
Node.js实现兼容IE789的文件上传进度条
2016/09/02 Javascript
jQuery的deferred对象使用详解
2016/09/25 Javascript
bootstrap table表格插件使用详解
2017/05/08 Javascript
js实现带搜索功能的下拉框
2020/01/11 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
vue项目里面引用svg文件并给svg里面的元素赋值
2020/08/17 Javascript
tensorflow构建BP神经网络的方法
2018/03/12 Python
Python中的单继承与多继承实例分析
2018/05/10 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
Python基于Socket实现简易多人聊天室的示例代码
2020/11/29 Python
美国玩具公司:U.S.Toy
2018/05/19 全球购物
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
请说出你所知道的线程同步的方法
2013/04/19 面试题
中专自我鉴定范文
2013/10/16 职场文书
幼儿园实习自我鉴定
2013/12/15 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
优秀三好学生事迹材料
2014/08/31 职场文书
2015年工会工作总结
2015/03/30 职场文书
汽车质检员岗位职责
2015/04/08 职场文书
我的法兰西岁月观后感
2015/06/09 职场文书