ES6语法特征 - ES6 - ECMAScript特征 - Javascript中心

原文: 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<len;i++) {
        //body
    }
    console.log(i,len);=> 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<len;i++) {
        //body
    }
    console.log(i,len) // throw Reference Error
}

末了一个,函数定义的作用域题目:

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

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

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

    原文作者:RobinQu
    原文地址: https://segmentfault.com/a/1190000000515164
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞