资讯专栏INFORMATION COLUMN

ES6语法特性 - ES6 - ECMAScript特性 - Javascript核心

jas0n / 1934人阅读

摘要:前三个是为了解决变量声明定义的问题,而最后一个则影响最大。下文只介绍前三个特性。这是因为的的不支持块级作用域,变量仅仅被限制到函数作用域内。

  

原文: http://pij.robinqu.me/JavaScript_Core/ECMAScript/es6/es6_syntax_features.html

  

源代码: https://github.com/RobinQu/Programing-In-Javascript/blob/master/chapters/JavaScript_Core/ECMAScript/es6/es6_syntax_features.md

本文需要[补充][1]更多例子

本文存在批注,但该网站的Markdown编辑器不支持,所以无法正常展示,请到原文参考。

ES6语法特性

ES6包含了很多万众期待的特性支持:

arrow functions

const

let

default function params

rest parameters

call(...)

array(...)

class

computed properties

modules

for...of

Array comprehensions

Generator comprehensions

Iterators

yield

Template Strings

block-level declaration

destructing

promoise

里面众多的特性都是让Javascript看起来更规范的好东西,但是大部分都没有被广泛支持。我们仅介绍其中已经至少被一种浏览器和node --harmony下支持的。

在写这篇文章的时候,有如下特性是较为广泛支持的:

let1

const2

Block-delvel declaration

for-of

yield

对,就这么多了。前三个是为了解决变量声明、定义的问题,而最后一个则影响最大。会在多带带篇幅中介绍。下文只介绍前三个特性。

let和block-level declaration

var is scoped to the nearest function block (or global if outside a function block)

let is scoped to the nearest enclosing block (or global if outside any block),

很多文献、书籍都建议将for循环的起始变量ilen等放置到函数作用于的顶部声明,以避免后续变量持续存在所造成的迷惑。

function() {
    for(var i=0,len=5;i 5,5
}

这是因为ES5的Javascript的不支持块级作用域,变量仅仅被限制到函数作用域内。

注意在node中,你需要同时加入--harmony--use-strict来启动,才会支持let。否则会报错: SyntaxError: Illegal let declaration outside extended mode

在ES6内,可以通过let来定义块级作用域的变量:

function() {
    for(let i=0,len=5;i

最后一个,函数定义的作用域问题:

function f() { console.log("I am outside!"); }
(function () {
  if(false) {
    // What should happen with this redeclaration?
    function f() { console.log("I am inside!"); }
  }

  f();
}());

如上代码,在ES5时代,每个浏览器都会得出不同的结果。但是ES6中,函数定义只在块级作用域内有效,结果很明确。

const关键字

const关键字定义一个块级作用域的常量变量。

const a = "You shall remain constant!";

// SyntaxError: Assignment to constant variable
a = "I wanna be free!";
yield

yield后面有一连串有关Generator和Iterator的内容,会在另外一片文章内详细介绍: Javascript Generator。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let ↩

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const ↩

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/78135.html

相关文章

  • ES6语法特性 - ES6 - ECMAScript特性 - Javascript核心

    摘要:前三个是为了解决变量声明定义的问题,而最后一个则影响最大。下文只介绍前三个特性。这是因为的的不支持块级作用域,变量仅仅被限制到函数作用域内。 原文: http://pij.robinqu.me/JavaScript_Core/ECMAScript/es6/es6_syntax_features.html 源代码: https://github.com/RobinQu/P...

    Joyven 评论0 收藏0
  • ES6语法特性 - ES6 - ECMAScript特性 - Javascript核心

    摘要:前三个是为了解决变量声明定义的问题,而最后一个则影响最大。下文只介绍前三个特性。这是因为的的不支持块级作用域,变量仅仅被限制到函数作用域内。 原文: http://pij.robinqu.me/JavaScript_Core/ECMAScript/es6/es6_syntax_features.html 源代码: https://github.com/RobinQu/P...

    StonePanda 评论0 收藏0
  • ES6特性概述 - ES6 - ECMAScript特性 - Javascript核心

    摘要:特性概述比较新特性更多。之后后分篇描述目前已经比较成熟的语法特性例如和。同上,但返回该元素的索引号。和对象的属性行为一致。不将参数强制转行为。判断是否为在范围内的正整数。不少层面的特性可以通过进行兼容性支持。 原文: http://pij.robinqu.me/JavaScript_Core/ECMAScript/es6/es6_api_extension.html 源...

    Ali_ 评论0 收藏0
  • ES6-前世今生(0)

    摘要:更新了个版本,最新正式版是语言的下一代标准,早已在年月正式发布。基本不支持移动端浏览器对的支持情况版起便可以支持的新特性。比较通用的工具方案有,,,等。 1、ECMAScript是什么? 和 JavaScript 有着怎样的关系? 1996 年 11 月,Netscape 创造了javascript并将其提交给了标准化组织 ECMA,次年,ECMA 发布 262 号标准文件(ECMA-...

    LeviDing 评论0 收藏0
  • ES6-7

    摘要:的翻译文档由的维护很多人说,阮老师已经有一本关于的书了入门,觉得看看这本书就足够了。前端的异步解决方案之和异步编程模式在前端开发过程中,显得越来越重要。为了让编程更美好,我们就需要引入来降低异步编程的复杂性。 JavaScript Promise 迷你书(中文版) 超详细介绍promise的gitbook,看完再不会promise...... 本书的目的是以目前还在制定中的ECMASc...

    mudiyouyou 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<