简单谈谈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 相关文章推荐
node.js中的fs.utimesSync方法使用说明
Dec 15 Javascript
javascript中parseInt()函数的定义和用法分析
Dec 20 Javascript
Node.js实现Excel转JSON
Apr 24 Javascript
js实现交通灯效果
Jan 13 Javascript
Node.js使用NodeMailer发送邮件实例代码
Mar 06 Javascript
字太多用...代替的方法(两种)
Mar 15 Javascript
微信小程序 动态传参实例详解
Apr 27 Javascript
详解js静态检查工具eslint配置文件
Nov 23 Javascript
vue ssr 实现方式(学习笔记)
Jan 18 Javascript
vue 实现移动端键盘搜索事件监听
Nov 06 Javascript
vue项目在webpack2实现移动端字体自适配功能
Jun 02 Javascript
利用JavaScript模拟京东按键输入功能
Dec 01 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中防止伪造跨站请求的小招式
2011/09/02 PHP
从刷票了解获得客户端IP的方法
2015/09/21 PHP
PHP Cookei记录用户历史浏览信息的代码
2016/02/03 PHP
php中的常用魔术方法汇总
2016/02/14 PHP
基于php实现的php代码加密解密类完整实例
2016/10/12 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
2017/06/21 PHP
JavaScript中“基本类型”之争小结
2013/01/03 Javascript
Jquery倒计时源码分享
2014/05/16 Javascript
使用Sticker.js实现贴纸效果
2015/01/28 Javascript
javascript中局部变量和全局变量的区别详解
2015/02/27 Javascript
jquery实现Ctrl+Enter提交表单的方法
2015/07/21 Javascript
JS拖拽组件学习使用
2016/01/19 Javascript
jQuery stop()用法实例详解
2016/07/28 Javascript
vue2.0使用v-for循环制作多级嵌套菜单栏
2018/06/25 Javascript
layui 实现加载动画以及非真实加载进度的方法
2019/09/23 Javascript
vue 实现v-for循环回来的数据动态绑定id
2019/11/07 Javascript
微信小程序如何获取地址
2019/12/24 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
Python基于twisted实现简单的web服务器
2014/09/29 Python
5种Python单例模式的实现方式
2016/01/14 Python
python模拟Django框架实例
2016/05/17 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
python无限生成不重复(字母,数字,字符)组合的方法
2018/12/04 Python
在cmd中查看python的安装路径方法
2019/07/03 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
python中的列表与元组的使用
2019/08/08 Python
django之导入并执行自定义的函数模块图解
2020/04/01 Python
如何使用Pytorch搭建模型
2020/10/26 Python
CSS3 透明色 RGBA使用介绍
2013/08/06 HTML / CSS
2014基层党员批评与自我批评范文
2014/09/24 职场文书
公务员年度考核评语
2014/12/31 职场文书
水电工程师岗位职责
2015/02/13 职场文书
大学毕业典礼致辞
2015/07/29 职场文书
【海涛七七解说】DCG第二周:DK VS 天禄
2022/04/01 DOTA
A22国内电台短波广播频率表
2022/05/10 无线电