ES6笔记一

1.启动命令中的--harmony选项可以打开所有已经部署的ES6功能

$ node --harmony

2.使用下面的命令,可以查看所有与ES6有关的单个选项。

    $ node --v8-options | grep harmony

3.ES6转化为ES5有下面几种方式:

.直接插入网页(网页头部加载Traceur库文件)

.在线转换

https://google.github.io/traceur-compiler/demo/repl.html#

http://babeljs.io/repl/

.命令行转换

    安装:    
         npm install -g traceur
    运行:
         traceur calc.js
    保存:
         traceur --script calc.es6.js --out calc.es5.js
     
    上面代码的--script选项表示指定输入文件,--out选项表示指定输出文件。
    为了防止有些特性编译不成功,最好加上--experimental选项。

或者

安装这个转玛器。
$ npm install -g es6-module-transpiler

然后,使用$ compile-modules convert file1.js file2.js

o参数可以指定转码后的文件名。

$ compile-modules convert -o out.js file1.js

4.let所声明的变量,只在let命令所在的代码块内有效。

let不像var那样,会发生“变量提升”现象。

let不允许在相同作用域内,重复声明同一个变量。

5.匿名函数

6.const也用来声明变量,但是声明的是常量。一旦声明,常量的值就不能改变。

const的作用域与let命令相同:只在声明所在的块级作用域内有效。

const声明的常量,也与let一样不可重复声明。

7.ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。

eg1:    var [a, b, c] = [1, 2, 3];

a=1,b=2,c=3

eg2: var [foo, [[bar], baz]] = [1, [[2], 3]];

foo // 1

bar // 2

baz // 3

eg3: var [,,third] = ["foo", "bar", "baz"];

third // "baz"

var [head, ...tail] = [1, 2, 3, 4];

head // 1

tail // [2, 3, 4]

eg4:   解构赋值允许指定默认值。

var [foo = true] = [];

foo // true

8.解构赋值不仅适用于var命令,也适用于let和const命令

对于Set结构,也可以使用数组的解构赋值。

[a, b, c] = new Set(["a", "b", "c"])

a // "a"

9.解构不仅可以用于数组,还可以用于对象。

var { foo, bar } = { foo: "aaa", bar: "bbb" };

foo // "aaa"

bar // "bbb"

数组的元素是按次序排列的,变量的取值由它的位置决定;对象的属性没有次序,变量与属性同名,才能取到正确的值。

解构也可以用于嵌套结构的对象。

var o = {
  p: [
    "Hello",
    { y: "World" }
  ]};
  
  var { p: [x, { y }] } = o;
  
  x // "Hello"
  y // "World"

对象的解构也可以指定默认值。

    var { x = 3 } = {};
    x // 3
    var {x, y = 5} = {x: 1};
    console.log(x, y) // 1, 5
时间: 2024-10-12 13:07:29

ES6笔记一的相关文章

ES6笔记(6)-- Set、Map结构和Iterator迭代器

系列文章 -- ES6笔记系列 搞ES6的人也是够无聊,把JS弄得越来越像Java.C++,连Iterator迭代器.Set集合.Map结构都出来了,不知道说什么好... 一.简单使用 1. iterator 学过C++的人应该知道这是个迭代器对象,拥有一个指针,指向数据结构中的某个成员 JS中的iterator也有类似的功能,JS内部为一些数据结构实现了iterator迭代器的接口,让我们可以方便的使用 var [a, b, ...c] = [1, 2, 3, 4]; c // [3, 4]

ES6笔记(3)-- 解构赋值

系列文章 -- ES6笔记系列 解构赋值,即对某种结构进行解析,然后将解析出来的值赋值给相关的变量,常见的有数组.对象.字符串的解构赋值等 一.数组的解构赋值 function ids() { return [1, 2, 3]; } var [id1, id2, id3] = ids(); console.log(id1, id2, id3); // 1 2 3 如上,解析返回的数组,取出值并赋给相应的变量,这就是解构赋值 1. 还可以嵌套多层,只要相应的模式匹配了就能解析出来 var [a,

ES6笔记(4)-- Symbol类型

系列文章 -- ES6笔记系列 Symbol是什么?中文意思是标志.记号,顾名思义,它可以用了做记号. 是的,它是一种标记的方法,被ES6引入作为一种新的数据类型,表示独一无二的值. 由此,JS的数据类型多了一位成员: Number.String.Boolean.undefined.Object.Symbol 一.简单使用 1. 声明 类似字符串String的声明方式 var str = 'str'; Symbol的声明方式类似,它调用构造函数Symbol() var s = Symbol();

ES6笔记之参数默认值(译)

原文链接:http://dmitrysoshnikov.com/ 原文作者:Dmitry Soshnikov 译者做了少量补充.这样的的文字是译者加的,可以选择忽略. 在这个简短的笔记中我们聊一聊ES6的又一特性:带默认值的函数参数.正如我们即将看到的,有些较为微妙的CASE. ES5及以下手动处理默认值 在ES6默认值特性出现前,手动处理默认值有几种方式: function log(message, level) { level = level || 'warning'; console.lo

ES6笔记Module

模块的定义 export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能. export: export var name = \"javascript\"; export var version = 6.0; var name = \"javascript\"; var version = 6.0; export {name,version}; 以上两种方式是等价的. export function Person() { this.name

ES6笔记

1. let 拥有块级作用域 *es6中不在有变量提升 2. class 通过extends进行继承 *super指父类 3. arrow function 并没有this, 直接继承外面this 4. template string `` 变量由$(x)表示 5. default function aa(type = 'cat' ) {} 6. reset arguments function aa(...types) {} ...types = arguments

es6笔记5^_^set、map、iterator

一.set 1.基本用法 数据结构Set类似于数组,但是成员的值都是唯一的,没有重复的值. let s = new Set(); [2,3,5,4,5,2,2].map(x => s.add(x)) for (let i of s) {console.log(i)}// 2 3 5 4 //Set函数可以接受一个数组作为参数,用来初始化. var items = new Set([1,2,3,4,5,5,5,5]); console.log(items); // set object conso

ES6笔记二

1.遍历Map结构;任何部署了Iterator接口的对象,都可以用for...of循环遍历.Map结构原生支持Iterator接口,配合变量的结构赋值,获取键名和键值就非常方便.     var map = new Map();     map.set('first', 'hello');     map.set('second', 'world');     for (let [key, value] of map) {       console.log(key + " is " 

es6笔记3^_^object

一.destructuring ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构Destructuring. //es5 if(1){ let cat = 'ken'; let dog = 'lili'; let zoo = {cat: cat, dog: dog}; console.log(zoo) ; //Object {cat: "ken", dog: "lili"} } //用ES6完全可以像下面这么写: if(1){ let ca