简单谈谈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 相关文章推荐
学习YUI.Ext 第二天
Mar 10 Javascript
WordPress JQuery处理沙发头像
Jun 22 Javascript
javascript arguments 传递给函数的隐含参数
Aug 21 Javascript
javascript 函数调用的对象和方法
Jul 01 Javascript
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
Sep 28 Javascript
JS中prototype关键字的功能介绍及使用示例
Jul 21 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
May 22 Javascript
Javascript中数组sort和reverse用法分析
Dec 30 Javascript
15个常用的jquery代码片段
Dec 19 Javascript
Vue2.5通过json文件读取数据的方法
Feb 27 Javascript
在vue中,v-for的索引index在html中的使用方法
Mar 06 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
Jul 16 jQuery
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
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
php循环输出数据库内容的代码
2008/05/24 PHP
CodeIgniter记录错误日志的方法全面总结
2016/05/17 PHP
php抽象方法和抽象类实例分析
2016/12/07 PHP
PHP cURL获取微信公众号access_token的实例
2018/04/28 PHP
php实现图片压缩处理
2020/09/09 PHP
兼容FireFox 的 js 日历 支持时间的获取
2009/03/04 Javascript
JavaScript 存在陷阱 删除某一区域所有节点
2010/05/10 Javascript
js 中 document.createEvent的用法
2010/08/29 Javascript
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
2011/09/26 Javascript
浅谈javascript的调试
2015/01/28 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
javascript设置文本框光标的方法实例小结
2016/11/04 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
2016/11/22 Javascript
详解jQuery简单的表格应用
2016/12/16 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
vue cli 3.x 项目部署到 github pages的方法
2019/04/17 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
Vue实现点击箭头上下移动效果
2020/06/11 Javascript
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
python3.0 字典key排序
2008/12/24 Python
浅析Python四种数据类型
2018/09/26 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
2019/02/01 Python
详解js文件通过python访问数据库方法
2019/03/03 Python
用pycharm开发django项目示例代码
2019/06/13 Python
django 通过URL访问上传的文件方法
2019/07/28 Python
python 实现在无序数组中找到中位数方法
2020/03/03 Python
Python同时处理多个异常的方法
2020/07/28 Python
python3中for循环踩过的坑记录
2020/12/14 Python
html table呈现个人简历以及单元格宽度失效的问题解决
2021/01/22 HTML / CSS
意大利奢侈品综合电商网站:MODES
2019/12/14 全球购物
傲慢与偏见读书笔记
2015/06/29 职场文书
运动员入场前导词
2015/07/20 职场文书
2017春节晚会开幕词
2016/03/03 职场文书
python opencv将多个图放在一个窗口的实例详解
2022/02/28 Python