简单谈谈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 相关文章推荐
编写兼容IE和FireFox的脚本
May 18 Javascript
JSON 学习之JSON in JavaScript详细使用说明
Feb 23 Javascript
基于jquery实现图片广告轮换效果代码
Jul 07 Javascript
javascript中普通函数的使用介绍
Dec 19 Javascript
JS在可编辑的div中的光标位置插入内容的方法
Nov 20 Javascript
EasyUI学习之Combobox下拉列表(1)
Dec 29 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
Mar 28 Javascript
javascript简单链式调用案例分析
May 10 Javascript
Ionic2开发环境搭建教程
Aug 20 Javascript
微信小程序 sha1 实现密码加密实例详解
Jul 06 Javascript
微信小程序实现循环动画效果
Jul 16 Javascript
javascript实现随机抽奖功能
Dec 30 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 变量的定义方法
2010/01/26 PHP
PHP使用ob_start生成html页面的方法
2014/11/07 PHP
PHP运行模式汇总
2016/11/06 PHP
利用PHP判断文件是否为图片的方法总结
2017/01/06 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
php cli模式下获取参数的方法
2017/05/05 PHP
js获取系统的根路径实现介绍
2013/09/08 Javascript
在Firefox下js select标签点击无法弹出
2014/03/06 Javascript
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
JS实现倒计时和文字滚动的效果实例
2014/10/29 Javascript
JavaScript之数组(Array)详解
2015/04/01 Javascript
Nodejs进阶:核心模块net入门学习与实例讲解
2016/11/21 NodeJs
Bootstrap超大屏幕的实现代码
2017/03/22 Javascript
jQuery Plupload上传插件的使用
2017/04/19 jQuery
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
Angular 数据请求的实现方法
2018/05/07 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
2019/10/26 jQuery
小程序api实现promise封装过程解析
2019/11/21 Javascript
Vue Element校验validate的实例
2020/09/21 Javascript
Python实现的生成格雷码功能示例
2018/01/24 Python
Python 利用切片从列表中取出一部分使用的方法
2019/02/01 Python
Django stark组件使用及原理详解
2019/08/22 Python
Golang GBK转UTF-8的例子
2019/08/26 Python
使用python turtle画高达
2020/01/19 Python
HTML5 video标签(播放器)学习笔记(一):使用入门
2015/04/24 HTML / CSS
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
求职信模板怎么做
2014/01/26 职场文书
2014年三万活动总结
2014/04/26 职场文书
电话客服专员岗位职责
2014/06/28 职场文书
财务会计实训报告
2014/11/05 职场文书
学者《孟子》名人名言
2019/08/09 职场文书
2019年教师节祝福语精选,给老师送上真诚的祝福
2019/09/09 职场文书
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python
浅谈pytorch中的dropout的概率p
2021/05/27 Python