ES6 聲明屬性
- let(塊內(nèi)變量) var(全局變量)
// let 適合局部變量
for (let i = 0; i < 10; i++) {
let i = 5;
// i 呈現(xiàn)不同的子作用域
}
- 變量作用域鹰椒,和變量提升(var)
var i;
console.log(i); // undefined
console.log(i); // 先聲明i ReferenceError
let i = 2;
- 暫時性死區(qū),重復(fù)聲明
var i = 1;
if (i) {
i = 2;
let i; // 暫時性死區(qū) ==const 對變量聲明賦值失敗
}
funtion foo() {
let a = 1;
let b = 2; // error ==const 重復(fù)聲明error
}
- 塊級作用域,const湖员,頂層對象
// 覽器環(huán)境指的是window對象漠其,在 Node 指的是global對象
var a = 1;
this.a; // 1 Node 模塊和 ES6 模塊中this返回的是當(dāng)前模塊
window.a; // 1
global.a; // 1
變量解構(gòu)
let [a,b,c] = [1,2,3];
console.log(a); // 1
let {foo,bar} = {foo:"foo1",bar:"bar1"}
console.log(foo); // foo1
const [a, b, c, d, e] = 'hello';
console.log(a); // h
let {toString: s} = 123;
s === Number.prototype.toString // true
function add([x, y]){
return x + y;
}
add([1, 2]);
函數(shù)
var x = 1;
function f(x, y = x) {
console.log(y);
}
f(2) // 2
//
var x = 1;
function foo(x, y = function() { x = 2; }) {
var x = 3;
y();
console.log(x);
}
foo() // 3
x // 1
function add(...values) {
let sum = 0;
for (var val of values) {
sum += val;
}
}
// 嚴格模式
function doSomething(a, b) {
'use strict';
}
// 默認值嘴高、解構(gòu)賦值、或者擴展運算符 不能使用
// 報錯
function doSomething(a, b = a) {
'use strict';
}
var func1 = (num1,num2) => {return num1 + num2}
// this 作用域
function foo() {
setTimeout(() => {
console.log('id:', this.id);
}, 100);
}
var id = 21;
foo.call({ id: 42 });