ES6新特性
class 类 (extends继承)
@example:
class Player {
constructor(x, y) {
this.x = 0;
this.y = 0;
}
getPosition() {
return this.x + ',' + this.y;
}
jumpFoward() {
this.x = this.x + 1;
}
jumpBackwards() {
this.x = this.x - 1;
}
}
import 引入外部模块
@example: import * as testClass from "./class"; // 从class模块中导出所有抛出的对象
@example: import {toString, foo, bar} from "./myModule"; // 从class模块中导出toString / foo / bar 属性或方法
export 抛出当前模块方法,供外部调用
@example: export default Archer; // 抛出模块中定义的Archer对象,外部使用default属性来获取Archer对象
@example: export var foo = 'foo'; // 抛出模块中的属性
@example: export function testMethod(){ // 抛出当前所定义的方法,供外部调用
// ...
}
let 块作用域 - 定义
@desc:
一般来说,JavaScript的作用域是“基于函数”的。就是说,为了包含一个私有变量,开发者必须声明一个函数。这点一直为许多使用过它语言的开发者所诟病。但现在,ES6提供了关键字let,使开发者可以声明块级变量,下面是一个例子:
@example:
function foo2() {
let bar = true;
if (bar) {
let baz = 'hi';
}
console.log(baz); // Uncaught ReferenceError: baz未定义
}
=> 箭头函数
@desc:
=>不只是关键字function的简写,它还带来了其它好处。箭头函数与包围它的代码共享同一个this。有经验的JavaScript开发者都熟悉诸如var self = this;或var that = this这种引用外围this的模式。但借助=>,就不需要这种模式了。
@example:
// ES5 (filter 数组过滤方法)
var selected = allJobs.filter(function (job) {
return job.isSelected();
});
// ES6
var selected = allJobs.filter(job => job.isSelected());
当需要编写一个简单的单一参数函数时,可以采用箭头函数来书写,标识名=>表达式。这样就可以省却function和return的输入,还有括号,分号等。
当需要编写一个含有多个参数的函数时,只要把相关参数用括号包起来就好了。
var values = [1,2,3,4,5];
// ES5 (reduce 数组累积结果计算)
var total = values.reduce(function (a, b) {
return a + b;
}, 0);
// ES6
var total = values.reduce((a, b) => a + b, 0);
console.log(total); // 15
Generators 迭代器(生成器函数)
@desc:
这是一种新型的JavaScript函数,使开发者可以暂挂他们的函数,并在多次执行中返回不同的值。
迭代器是一个拥有 {value:{*}, done:{Boolean}} next([*])方法 和 {undefined} throw([*])方法 的对象,通过next函数不断执行以关键字yield分割的代码段,通过throw函数令yield分割的代码段抛出异常。
@example:
// 定义生成器函数
function *enumerable(msg){
console.log(msg)
var msg1 = yield msg + ' after '
console.log(msg1)
var msg2 = yield msg1 + ' after'
console.log(msg2 + ' over')
}
// 上述代码最终会被解析为下面的代码:
var enumerable = function(msg){
var state = -1
return {
next: function(val){
switch(++state){
case 0:
console.log(msg + ' after')
break
case 1:
var msg1 = val
console.log(msg1 + ' after')
break
case 2:
var msg2 = val
console.log(msg2 + ' over')
break
}
}
}
}
// for...of语句
enumerator = enumerable('hello')
for(ret of enumerator)
console.log(JSON.stringify(ret));
// 初始化迭代器
var enumerator = enumerable('hello')
var ret = enumerator.next() // 控制台显示 hello,ret的值{value:'hello after',done:false}
ret = enumerator.next('world') // 控制台显示 world,ret的值{value:'world after',done:false}
ret = enumerator.next('game') // 控制台显示game,ret的值{value:'game after',done:false}
// 抛出异常信息
ret = enumerator.throw(new Error('test')) // 控制台显示new Error('test')信息,然后显示game over。ret的值为{done:true}
// for...of语句
enumerator = enumerable('hello')
for(ret of enumerator)
console.log(JSON.stringify(ret));
优化了“尾调用(Tail Calls)”
@desc:
一直到ES5,函数递归调用过多会导致栈溢出(到达内存上限),这是因为函数每次调用自己时都会调用一个新版本。但优化之后,每次调用会同上次调用共享同一个上下文,保证了内存使用率的稳定。
安装babel-node,运行es6
sublime BuildSystem:
{
"path": "/usr/local/bin",
"working_dir": "${project_path:${folder}}",
"selector": "source.js",
"encoding": "utf-8",
"shell": true,
"windows": {
"cmd": ["taskkill /f /im node.exe >nul 2>nul & babel-node $file"]
},
"osx": {
"cmd": ["killall node >/dev/null 2>&1; babel-node $file"]
},
"linux": {
"cmd": ["killall node >/dev/null 2>&1; babel-node $file"]
}
}
相关推荐
ES6新特性中比较突出的包括: 1. const关键字:使用const声明的常量具有块级作用域,一旦赋值后不可更改。在声明常量时必须立即初始化,否则后续尝试赋值会引发错误。 2. let关键字:let关键字允许声明块级作用域...
ES6(ECMAScript 2015)是JavaScript语言的一个重大更新版本,它带来了许多新特性,提高了开发效率和编程的便利性。在本篇文章中,我们将详细探讨几个ES6的关键新特性:let和const关键字、字符串的扩展、解构表达式...
这个压缩包"ES6 新特性示例代码.zip"包含了与ES6新特性相关的代码示例,帮助我们更直观地理解这些特性。以下是对这些特性的详细解释: 1. **let 和 const 声明**: - `let` 用于块级作用域变量声明,解决了之前`...
JavaScript ES6新增特性
ES6新特性.docx
查看我整理的ES新特性思维导图,参照思维导图可以宏观角度来学习ES6的新特性。配合Day05-Day07进行学习效果更佳
前端开发之ES6新特性
新特性 let、const let 定义的变量不会被变量提升,const 定义的常量不能被修改,let 和 const 都是块级作用域 ES6前,js 是没有块级作用域 {} 的概念的。(有函数作用域、全局作用域、eval作用域) ES6后,...
ES6新特性的一个笔记总结
JavaScript:ES6新特性深入解析.docx
#### 二、ES6的主要新特性概览 ES6 引入了多项新特性,这些特性大大增强了 JavaScript 的功能性和可读性。下面是一些关键特性的详细介绍: **2.1 箭头函数** 箭头函数是一种新的函数定义方式,其语法更为简洁,...
历时将近6年的时间来制定的新 ECMAScript 标准 ECMAScript 6, 这里摘取了ES6的一些新语法,新特性, 功能特别强大,个人感觉真的非常好用
JavaScript:ES6新特性:类与模块教程.docx
Day01-ES6新特性以及ReactJS入门1. ES6 新特性此部分内容为前端知识,详见《ECMAScript6 基础笔记》在线文档:JavaScript笔
JavaScript:ES6新特性:模板字符串与解构赋值.docx
这些只是ES6特性的一部分,还有像`Set`、`Map`、`WeakSet`、`WeakMap`等数据结构,以及`for...of`循环、`async/await`等更多内容,它们共同构成了ES6丰富的特性集合,使得JavaScript在前端开发中更具魅力。
ES6新特性---变量的定义let、const!自己整理的资源,给大家分享!资源分数没有0,没办法!只能设置是1
ES6新特性之数组的扩充详解主要介绍了ES6新特性之数组的扩充,结合实例形式分析了ES6数组操作的常见方法与相关使用技巧。 1. Array.from():将类似数组的对象或可遍历对象转换为真正的数组。它可以接受两个参数,第...
### JavaScript:ES6新特性:类与模块教程 #### 一、引言 随着Web技术的发展,JavaScript作为前端开发的核心语言之一,也在不断地进化和完善。ECMAScript 6(简称ES6),是JavaScript的一种规范版本,它带来了一...
以下是一些重要的ES6特性: 1. **箭头函数**:箭头函数提供了更简洁的函数定义方式,如 `(params) => { return expression; }`,当只有一个参数时,括号可以省略,且如果表达式只有一行,花括号也可以省略。 2. **...