ECMAScript6

ECMAScript 6 Promises(下):谈谈 API(一)

我怕爱的太早我们不能终老 提交于 2020-05-03 21:20:11
原文地址: http://www.2ality.com/2014/10/es6-promises-api.html 原文作者:Dr. Axel Rauschmayer 译者:倪颖峰 原博客已经标明:本博客文档已经过时,可进一步阅读“Exploring ES6”中的 “ Promises for asynchronous programming ”。仔细对比了下,两者的确存在一些差异。本文是在原来的译文基础上修订的。 (文章第二部分实在是太长,所以在此分成两部分翻译) 本文是通过普通的Promises 和 ES6的 Promise API 来介绍异步编程。这是两篇系列文章的第二部分 - 第一部分介绍了一下异步编程的基础(你需要充分理解一下以便明白这篇文章)。 1. 概述 下面函数通过一个 Promise异步返回结果: function asyncFunc() { return new Promise( function (resolve, reject) { resolve(value); // success ··· reject(error); // failure });} 可以像下面这样来调用 asyncFunc() : asyncFunc() .then(value => { /* success */ }) .catch(error => { /* failure */

Babel指南

别等时光非礼了梦想. 提交于 2020-03-25 13:02:50
3 月,跳不动了?>>> ECMAScript的现状 ECMAScript,本身是一个脚本语言的设计规范,基于此规范,有许多为人熟知的语言,如JavaScript、ActionScript等。而时至几年前,随着Node.js的出现,以及HTML5带来的诸多新WebAPI,让JavaScript一下子提升到一个无比重要的位置。时至那个阶段,我们可以统称当时为ECMAScript5(ES5)。 那之后,很快就开始了对ECMAScript 2015(ES6)的制定,ES6一洗JS过去诸多的奇淫巧技、含糊不清的地方,带入了很多现代编程语言的特性,而且其推行的速度远比HTML5和CSS3要快。而在今天讨论ES6的时候,实际上ECMAScript 2016(ES7)已经在制定中(目前其实主要是修正和弥补ES6的不足),很多已经可以使用在实际生产环境中。 然而如上所述,即使是ES6,仍然有许多不足之处,所以急匆匆的ES7上线了,纵然你在使用ES6了,但是以今天的技术发展速度来说,既然ES7有了修正案,尽早的切入到ES7才能跟得上时代的步伐。 而JavaScript是一门需要环境依托运行的语言,无论是Browser环境下,还是服务器环境下,都需要环境的支持。下面这个列表,可以看到你的浏览器,和当前市面可支持JavaScript环境对ES6的支持情况: https://kangax.github

ECMAScript6入门 学习之简介

血红的双手。 提交于 2020-03-18 22:37:16
3 月,跳不动了?>>> 1.什么是ECMAScript 6? ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。可能大家会疑惑ECMAScript和JavaScript是什么关系?为什么不是统一命名。 ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现(另外的ECMAScript方言还有Jscript和ActionScript)。在日常场合,这两个词是可以互换的。主要是区分一是因为商标(Java是Sun公司的商标,根据授权协议,只有Netscape公司可以合法地使用JavaScript这个名字,且JavaScript本身也已经被Netscape公司注册为商标。)和二是体现这门语言的制定者是ECMA,不是Netscape,这样有利于保证这门语言的开放性和中立性。 2.ECMAScript 6 中变量声明let和const 2.1 ES6新增了let命令,用来声明变量 它的用法类似于 var ,但是所声明的变量,只在 let 命令所在的代码块内有效。 { let a = 1; var b = 2; } console.log(a); // ReferenceError: a is not

es6箭头函数(=>)与展开特性运算符(...)的使用

亡梦爱人 提交于 2019-12-09 18:11:30
箭头函数的几个写法 //当含有固定个参数的时候,es5写法 function test(a,b){ ..} //es6写法(es6参数可以设置默认值) let test = (a,b) => {..} 当函数体中仅有一行的时候,可以省略掉return与外部的{},但是如果return对象是一个对象时,应再外部包含括号 let test = (a,b) => a+b; //返回对象时 let test = (name = 'heihei') => ({'name':name}) 当仅有一个参数的时候,可以直接写作 let test = number => number*=3; //es5中对象中的方法写法 var a = { name:'heihei', say: function(){..} } es6中的新写法 let a = { name:'heihei', say(){..} } 展开运算符... es5中,当参数比较多的时候,需要用到arguments去操作参数,这个在es6中得到改善,用...可以实现 // [2,3,4] ((a,...b)=>{console.log(b)})(1,2,3,4) 函数内部将多余参数合并为数组,形参内使用...则可以将数组拆分为参数,当用apply将数组展开作为参数时,可以比较好的用到 function aaa(a,b,c){...}

借助Babel 6平台使用ES6新特性

蓝咒 提交于 2019-12-07 12:47:29
ES6新特性 关于E S6新特性我就不废话太多了,这里仅简单罗列一下: 箭头函数 类 增强的Object字面量 模板字符串 解构 参数默认值,不定参数,拓展参数 let与const 关键字 for of 值遍历 模块 Map和Set类型 Proxies Symbols Math,Number,String,Object 的新API Promises异步对象 参考1: http://www.cnblogs.com/Wayou/p/es6_new_features.html 参考2: http://babeljs.io/docs/learn-es2015/ Babel 6 由于目前主要浏览器不能够完全支持ES6,因此通常借助一些工具将ES6语法翻译成ES5, Babel即是这样一款工具。 最新的Babel 6与Babel 5及更早的版本有很大的差别, Babel变成了一个平台,而其他各种工具则以插件的形式安装。 通过控制台全局安装babel: npm install -g babel-cli 此时,全局安装的模块默认位于“C:\Users\zhl\AppData\Roaming\npm\node_modules”(Windows系统),为了正常使用Babel,一定要添加环境变量“NODE_PATH”,并指向上述路径。 为了使用Babel的翻译功能,安装ES6翻译插件(仍然全局安装):

浅谈Javascript模块化开发

牧云@^-^@ 提交于 2019-12-05 02:27:01
自己接触过的几种javascript模块开发,由于水平有限,只能简单谈一谈。 立即执行匿名函数 由于javascript的函数作用域,将模块代码放入立即执行匿名函数中,防止污染全局变量。将需要对外提供的类或对象暴露到window对象中。 需要实例化的模块 定义 // mod1.js (function(window) { var defaultOpts = {}; // 外部传入一些配置选项,也可不传入以默认选项实现 var Module1 = function(options) { this.options = $.extend(true, {}, defaultOpts, options); this.init(); }; // 将需要对外提供的方法加到原型链上 Module1.prototype = { constructor : Module1, init : function() { this.initPage(); this.initEvent(); this.initOther(); }, initPage : function() { }, initEvent : function() { method1(); }, initOther : function() { }, getOne : function(){} // 其他需要对外提供的接口 }; //