简单谈谈ES6的六个小特性

前言

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

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

一、Object[key]

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

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

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

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

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

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

二、Arrow Functions

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

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 firstAdult = ages.find(age => age >= 18); // 19
let firstAdultIndex = ages.findindex(age => age >= 19); // 1

四、...扩展修饰符

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

rush:js;"> // 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里多行字符起初通过+和```来完成的,但是都很难维护。许多开发者甚至一些框架使用