简单谈谈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 相关文章推荐
javascript下string.format函数补充
Aug 24 Javascript
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
Jul 27 Javascript
js Object2String方便查看js对象内容
Nov 24 Javascript
html的DOM中document对象images集合用法实例
Jan 21 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
Jun 04 Javascript
js实现延迟加载的方法
Jun 24 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
May 03 Javascript
vue省市区三联动下拉选择组件的实现
Apr 28 Javascript
将angular-ui的分页组件封装成指令的方法详解
May 10 Javascript
微信小程序实现蒙版弹窗效果
Nov 01 Javascript
jQuery实现上下滚动公告栏详细代码
Nov 21 jQuery
vue和iview实现Scroll 数据无限滚动功能
Oct 31 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判断搜索引擎蜘蛛并自动记忆到文件的代码
2012/02/04 PHP
THINKPHP支持YAML配置文件的设置方法
2015/03/17 PHP
PHP 错误处理机制
2015/07/06 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
奇妙的js
2007/09/24 Javascript
js 匿名调用实现代码
2009/06/19 Javascript
javascript小数计算出现近似值的解决办法
2010/02/06 Javascript
javascript for循环设法提高性能
2010/02/24 Javascript
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
JavaScript中的Array对象使用说明
2011/01/17 Javascript
初识Node.js
2014/09/03 Javascript
24款热门实用的jQuery插件推荐
2014/12/24 Javascript
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
3种vue组件的书写形式
2017/11/29 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
在Python中操作列表之list.extend()方法的使用
2015/05/20 Python
Python读取word文本操作详解
2018/01/22 Python
Django 登陆验证码和中间件的实现
2018/08/17 Python
python 3.7.0 下pillow安装方法
2018/08/27 Python
Python 调用PIL库失败的解决方法
2019/01/08 Python
python itchat给指定联系人发消息的方法
2019/06/11 Python
python 实现turtle画图并导出图片格式的文件
2019/12/07 Python
详解使用HTML5的classList属性操作CSS类
2017/10/13 HTML / CSS
html5服务器推送_动力节点Java学院整理
2017/07/12 HTML / CSS
林清轩官方网站:山茶花润肤油开创者
2016/10/26 全球购物
师德学习感言
2014/01/31 职场文书
农业局学习党的群众路线教育实践活动心得体会
2014/03/07 职场文书
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
幼儿教师求职信
2014/05/24 职场文书
计生专干事迹
2014/05/28 职场文书
毕业论文答辩演讲稿
2015/06/23 职场文书
js实现模拟购物商城案例
2021/05/18 Javascript
《金肉人》米特&《航海王》阿鹤声优松岛实因胰脏癌去世 享寿81岁
2022/04/13 日漫