简单谈谈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不出现Flash激活框的小发现的js实现方法
Sep 07 Javascript
ASP Json Parser修正版
Dec 06 Javascript
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
Jun 25 Javascript
javascript动画之圆形运动,环绕鼠标运动作小球
Jul 20 Javascript
js预加载图片方法汇总
Jun 15 Javascript
javascript实现五星评价代码(源码下载)
Aug 11 Javascript
JavaScript获取tr td 的三种方式全面总结(推荐)
Aug 15 Javascript
微信小程序自定义tab实现多层tab嵌套功能
Jun 15 Javascript
在Vue中使用axios请求拦截的实现方法
Oct 25 Javascript
vue使用高德地图根据坐标定位点的实现代码
Aug 22 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
Mar 09 Javascript
vue 数字翻牌器动态加载数据
Apr 20 Vue.js
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缓存技术详细总结
2013/08/07 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
form自动提交实例讲解
2017/07/10 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
用JQuery调用Session的实现代码
2010/10/29 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
JQuery中serialize()、serializeArray()和param()方法示例介绍
2014/07/31 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
jQuery的事件委托实例分析
2015/07/15 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
浅谈几种常用的JS类定义方法
2016/06/08 Javascript
基于vuejs实现一个todolist项目
2017/04/11 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
React Native开发封装Toast与加载Loading组件示例
2018/09/08 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
2018/09/20 Javascript
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
微信小程序实现锚点跳转
2020/11/23 Javascript
python中stdout输出不缓存的设置方法
2014/05/29 Python
通过数据库对Django进行删除字段和删除模型的操作
2015/07/21 Python
Python常见格式化字符串方法小结【百分号与format方法】
2016/09/18 Python
python 获取list特定元素下标的实例讲解
2018/04/09 Python
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
python实现字符串中字符分类及个数统计
2018/09/28 Python
python利用pandas将excel文件转换为txt文件的方法
2018/10/23 Python
python实现指定字符串补全空格、前面填充0的方法
2018/11/16 Python
python中tab键是什么意思
2020/06/18 Python
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
2013/08/11 HTML / CSS
洛杉矶时尚女装系列:J.ING US
2019/03/17 全球购物
2013年军训通讯稿
2014/02/05 职场文书
三爱活动实施方案
2014/03/19 职场文书
购房意向书范本
2014/04/01 职场文书
一年级学生评语
2014/04/23 职场文书