`

ES6令人激动的特性

 
阅读更多

Nick JusticeGitHub开发者计划的一员。早在ES6语言标准发布之前,他就借助像Babel这样的转译器以及最新版本的浏览器在自己的项目中使用ES6特性。他认为,ES6的新特性将极大地改变JavaScript的编写方式。近日,他在一篇博文中介绍了多项令人激动的特性:

Promises:对于JavaScript而言,promises不是什么新东西,许多库都提供了这一特性。但现在,它正式成为ES6语言标准的一部分。这里有一个使用ES6 Promises处理AJAX请求的例子,从中可以一窥其工作方式。

块作用域:一般来说,JavaScript的作用域是“基于函数”的。就是说,为了包含一个私有变量,开发者必须声明一个函数。这点一直为许多使用过它语言的开发者所诟病。但现在,ES6提供了关键字let,使开发者可以声明块级变量,下面是一个例子:

function foo() {
  let bar = true;

  if (bar) {
    var baz = 'hi!';
  }

  console.log(baz); // hi
}

foo();

function foo2() {
  let bar = true;

  if (bar) {
    let baz = 'hi';
  }

  console.log(baz); // Uncaught ReferenceError: baz未定义
}

foo2();

箭头函数:这是ES6中最令Nick激动的特性之一。=>不只是关键字function的简写,它还带来了其它好处。箭头函数与包围它的代码共享同一个this。有经验的JavaScript开发者都熟悉诸如var self = this;var that = this这种引用外围this的模式。但借助=>,就不需要这种模式了。

Generators:这是一种新型的JavaScript函数,使开发者可以暂挂他们的函数,并在多次执行中返回不同的值。关于该特性的详细信息,请阅读Nick先前写过的一篇文章及查阅MDN。这可能是最令Nick激动的特性。

Import(模块):在ES6语言标准正式发布之前,Nick及其团队就已经借助诸如Require.js和Browserify这样的框架在项目中使用模块加载。现在,ES6语言本身就提供了模块定义,语法如下:

// myModule.js
export function myModule(someArg) {
  return someArg;
}

// main.js
import {myModule} from 'myModule';

myModule('foo'); // 'foo'

除了基本语法外,开发者还可以在一个模块中多次export以及import整个模块作为一个特定的命名空间。然后,就可以通过新命名空间调用模块中的每个方法:

// myModule.js
export var foo = 'foo';
export var bar = 'bar';

// main.js
import * as baz from 'myModule';

baz.foo; // 'foo'
baz.bar // 'bar'

:ES6的类存在一些争议,主要是因为其实现没有采用传统的继承方式。这意味着,新的class关键字更多的只是位于传统的原型继承之上的语法糖。关于JavaScript的原型继承,请查看这里这里。关于ES6类的实例,请查看这里

优化了“尾调用(Tail Calls)”:一直到ES5,函数递归调用过多会导致栈溢出(到达内存上限),这是因为函数每次调用自己时都会调用一个新版本。但优化之后,每次调用会同上次调用共享同一个上下文,保证了内存使用率的稳定。 

分享到:
评论

相关推荐

    Es6语法教程详细版

    ### ES6语法教程详细版 #### 一、ECMAScript 6 简介 ECMAScript 6,通常简称为ES6,是JavaScript语言的一个...随着ECMAScript标准的不断演进,我们可以期待未来会有更多令人兴奋的新特性加入到JavaScript语言之中。

    understanding-es6.pdf

    ES6不仅增加了新的对象类型,还引入了新的语法和令人兴奋的新功能。经过多年的研讨与辩论,ES6在2014年完成了特性完整性的开发。虽然在所有JavaScript环境中完全支持ES6还需要一段时间,但了解即将到来的变化以及...

    基于ES6的DOM元素动画库插件

    **正文** 在现代Web开发中,为用户提供动态和引人入胜的视觉体验变得越来越重要。...无论是用于商业网站、个人博客还是其他类型的在线项目,t-scroll.js都能帮助开发者创造出令人印象深刻的用户体验。

    es6-illuminated:ES6改写了GaëtanRenaudeau令人惊叹的Illuminated图书馆

    ES6版本的Illuminated图书馆,可能包含模块化、类结构的重构,以及使用ES6新特性优化的代码结构。阅读源代码可以帮助理解如何在实际项目中应用ES6特性。 通过这个项目,开发者不仅可以学习到ES6的新特性和语法,还...

    ES6学习教程之块级作用域详解

    这导致了一些令人困惑的情况,比如变量提升和在for循环中使用var声明的变量在循环外部仍然可访问。为了改善这种情况,ES6引入了let和const关键字,它们提供了块级作用域,并解决了变量重复声明的问题。 首先,让...

    快速学习ECMAScript6

    为了快速学习ES6,可以使用诸如《ECMAScript 6 Succinctly》这样的手册,该手册通过关键示例和说明,简洁直接地教授ES6的核心概念,使得学习过程既简洁又高效,不会令人感到头痛。 3. 书中内容概览 《ECMAScript 6 ...

    es6-party:您将学习ES6,并且会喜欢它

    在当今的Web开发领域,JavaScript作为最常用的客户端编程语言,其更新迭代速度之快令人惊叹。其中,ES6(ECMAScript 2015)的发布,为JavaScript带来了大量的新特性,极大地提升了开发效率和代码可读性。本篇文章将...

    短小却令人惊叹的javascript代码.docx

    短小却令人惊叹的javascript代码 本文中,我们将介绍三个短小却令人惊叹的JavaScript代码,分别是数组去重、在数组中找出最小值(或者最大值)和交换两个变量的值。这些代码可以帮助我们在项目开发过程中解决一些...

    JavaScript_自动生成令人印象深刻的提交与AI在1秒.zip

    在"JavaScript_自动生成令人印象深刻的提交与AI在1秒.zip"这个压缩包中,我们可以推测其内容可能涉及如何使用JavaScript来创建一个能够快速生成独特提交信息的工具,这在版本控制系统如Git中非常有用,特别是在协作...

    Simple-react-boilerplate:React,浏览器化,大吃一惊,ES6样板!

    它支持React库、能够处理浏览器兼容性问题("浏览器化"通常指的是Browserify或Webpack等工具将CommonJS模块转换为浏览器可执行的格式)、采用ES6语法(这是一种更现代的JavaScript版本,包括类、箭头函数等特性),...

    Sencha Cmd 6 文档

    Sencha Cmd作为一款强大的前端应用构建工具,在其最新的6.5版本中引入了许多令人期待的新功能。本文将重点介绍其中两个关键特性:对ES6(ECMAScript 2015)的支持以及Progressive Web Applications(PWA)的支持,并...

    2022年Web前端开发技术总结.doc

    :ES2015(亦称ES6)带来了大量令人激动的新语言特性,但由于浏览器版本碎片化问题,目前编写生产环境代码仍然以ES5为主,JS解释引擎对新特性的支持程度并不能阻碍狂热的开发者使用他们。 2.2 TypeScript:...

    es的全称是ecmaScript,它是由ecma国际标准化组织,制定的一项脚本语言的标准化规范

    每一次标准的诞生都意味着语言的完善,功能的加强,javaScript语言本身也有一些令人不满意的地方 *变量提升特性增加了程序运行时的不可预测性 *语法过于松散,实现相同的功能,不同的人可能会写出不同的代码

    令人震惊的发展

    例如,ES6(ECMAScript 2015)的发布,引入了类、模块、箭头函数等新特性,极大地提升了代码的可读性和可维护性,这无疑是JavaScript发展的一个重要里程碑。 此外,JavaScript在移动应用开发中也有突出表现。React ...

    the-incredible-programmer-

    这位程序员可能精通JavaScript的核心概念,如变量、数据类型、函数、对象、闭包,以及DOM操作,同时可能对ES6+的新特性如箭头函数、模板字符串、Promise和async/await有深入理解。 标签"JavaScript"进一步确认了...

    Zmey:游戏引擎。 呼吸着火和令人敬畏

    Zmey是一款开源的游戏引擎,致力于为开发者提供一个强大而灵活的框架,用于创建互动式、视觉上令人惊叹的3D游戏。"呼吸着火和令人敬畏"这个描述暗示了Zmey引擎可能在渲染效果和动态表现上有着独特的优势,能够创造出...

    lanceguyatt-legacy:使用React,React Router,Webpack2,PostCSS,样式化组件和ES6构建的个人站点

    在Web开发领域,技术的迭代速度之快令人惊叹。Lance Guyatt的"lanceguyatt-legacy"项目就是一个典型的例子,它利用了当时(可能是几年前)最前沿的技术栈,包括React、React Router、Webpack2、PostCSS以及Styled-...

    z-mindnote:打字稿+ vue令人讨厌的心思

    【标题】"z-mindnote:打字稿+ vue令人讨厌的心思" 指的是一款基于Vue.js框架开发的应用,结合了打字稿(可能是用于记录思维导图或笔记的工具)和Vue的一些特性。从描述来看,这可能是一个个人项目或者是开发者为了...

    three.js-r119.tar.gz

    《Three.js:开启WebGL三维视觉盛宴》 Three.js,作为一款强大的JavaScript库,是WebGL技术的重要伴侣,使得在浏览器中...无论你是初学者还是经验丰富的开发者,Three.js都能帮助你在Web上构建令人惊叹的三维世界。

    高级Web开发人员训练营注释示例和练习:示例和练习已编译。 来自令人敬畏的Advanced Web Developer Bootcamp

    在这个训练营中,您会接触到ES2015(也称为ES6)的新特性,如箭头函数、模板字符串、let和const关键字、类和模块等。通过示例和练习,您将学习如何编写高效、可维护的代码,并掌握事件处理、DOM操作、AJAX异步通信等...

Global site tag (gtag.js) - Google Analytics