ES6学习笔记1:声明和赋值

规格文件:http://ecma-international.org/ecma-262/6.0/

1 let
不存在变量提升
暂时性死区 tdz
不允许重复声明

2 变量提升
[javascript]
var tmp = new Date();
function f(){
console.log(tmp);
if(false){
var tmp = "Hello world!";
}
}
f(); // undefined
[/javascript]

3 const定义之后值不能变,但是
[javascript]
const foo = {};
foo.prop = 123; // 可以

const foo = Object.freeze({});
foo.prop = 123; // 不起作用

const a = [];
a.push("Hello"); // 可以
a.length = 0; // 可以
a = [‘Dave’]; // 报错
[/javascript]

4 ES6声明变量6种方式
var
function
let
const
import
class

let、const、class声明的全局变量不是全局对象的属性

5 解构赋值
[javascript]
let [foo, [[bar], baz]] = [1, [[2], 3]];
let [x, , y] = [1, 2, 3];
let [x, …y] = [1, 2, 3, 4];
let [x, y, …z] = ["a"];

// 默认值是表达式,表达式是惰性求值的
let [x = f()] = [1]; // f()不执行

// 对象的解构赋值
var {foo, bar} = {foo:’aaa’, bar: ‘bbb’};
var {foo: baz} = {foo:’aaa’, bar: ‘bbb’};
baz // ‘aaa’

模式不会被赋值
使用括弧避免JavaScript将{}解析为代码块

//字符的解构赋值
let {length:len} = ‘hello’;
[/javascript]

您的赞助将会支持作者创作及本站运维

评论

共1条
  1. Mukti 2017-07-25 18:10

    评论

发表评论


TOP