脚本宝典收集整理的这篇文章主要介绍了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
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
下支持的。
在写这篇文章的时候,有如下特性是较为广泛支持的:
对,就这么多了。前三个是为了解决变量声明、定义的问题,而最后一个则影响最大。会在单独篇幅中介绍。下文只介绍前三个特性。
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循环的起始变量i
、len
等放置到函数作用于的顶部声明,以避免后续变量持续存在所造成的迷惑。
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。
以上是脚本宝典为你收集整理的ES6语法特性 - ES6 - ECMAScript特性 - Javascript核心全部内容,希望文章能够帮你解决ES6语法特性 - ES6 - ECMAScript特性 - Javascript核心所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。