简单谈谈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 相关文章推荐
提高 DHTML 页面性能
Dec 25 Javascript
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
Apr 27 Javascript
浏览器兼容性问题大汇总
Dec 17 Javascript
js格式化时间的方法
Dec 18 Javascript
如何学JavaScript?前辈的经验之谈
Dec 28 Javascript
微信小程序商城项目之淘宝分类入口(2)
Apr 17 Javascript
vue.js 获取select中的value实例
Mar 01 Javascript
详解Vue内部怎样处理props选项的多种写法
Nov 06 Javascript
js实现随机数小游戏
Jun 28 Javascript
关于layui toolbar和template的结合使用方法
Sep 19 Javascript
vue中注册自定义的全局js方法
Nov 15 Javascript
JS检测浏览器开发者工具是否打开的方法详解
Oct 02 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
2006/12/23 PHP
一个php导出oracle库的php代码
2009/04/20 PHP
将一维或多维的数组连接成一个字符串的php代码
2010/08/08 PHP
20个PHP常用类库小结
2011/09/11 PHP
zend Framework中的Layout(模块化得布局)详解
2013/06/28 PHP
利用中国天气预报接口实现简单天气预报
2014/01/20 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
php使用fullcalendar日历插件详解
2019/03/06 PHP
jquery 得到当前页面高度和宽度的两个函数
2010/02/21 Javascript
在Firefox下js select标签点击无法弹出
2014/03/06 Javascript
第二篇Bootstrap起步
2016/06/21 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
微信小程序实现给循环列表添加点击样式实例
2017/04/26 Javascript
Vue中如何实现轮播图的示例代码
2017/07/27 Javascript
浅谈JsonObject中的key-value数据解析排序问题
2017/12/06 Javascript
vue中使用echarts制作圆环图的实例代码
2018/07/27 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
vue 实现 rem 布局或vw 布局的方法
2019/11/13 Javascript
javascript 原型与原型链的理解及应用实例分析
2020/02/10 Javascript
完美解决Pycharm无法导入包的问题 Unresolved reference
2018/05/18 Python
python DataFrame 取差集实例
2019/01/30 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
接口自动化多层嵌套json数据处理代码实例
2020/11/20 Python
暇步士官网:Hush Puppies
2016/09/22 全球购物
猎人靴英国官网:Hunter Boots
2017/02/02 全球购物
Speedo速比涛中国官方网站:全球领先泳装运动品牌
2018/04/24 全球购物
乌克兰网上珠宝商店:GoldSoveren
2020/03/31 全球购物
创业计划书六个要素
2013/12/26 职场文书
机关门卫岗位职责
2013/12/30 职场文书
校运会宣传稿大全
2015/07/23 职场文书
创业计划书之蛋糕店
2019/08/29 职场文书
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
使用Django框架创建项目
2022/06/10 Python