ES6 強制開啟嚴格模式 作用域 var 聲明局部變數,for/if花括弧中定義的變數在花括弧外也可訪問 let 聲明的變數為塊作用域,變數不可重覆定義 const 聲明常量,塊作用域,聲明時必須賦值,不可修改 解構賦值 使用場景 變數交換 獲取多個函數值 獲取多個函數返回值 對象解構賦值 獲取js ...
ES6 強制開啟嚴格模式
作用域
- var 聲明局部變數,for/if花括弧中定義的變數在花括弧外也可訪問
- let 聲明的變數為塊作用域,變數不可重覆定義
- const 聲明常量,塊作用域,聲明時必須賦值,不可修改
// const聲明的k指向一個對象,k本身不可變,但對象可變
function test() {
const k={
a:1
}
k.b=3;
console.log(k);
}
test()
解構賦值
{
let a, b, 3, rest;
[a, b, c=3]=[1, 2];
console.log(a, b);
}
//output: 1 2 3
{
let a, b, 3, rest;
[a, b, c]=[1, 2];
console.log(a, b);
}
//output: 1 2 undefined
{
let a, b, rest;
[a, b, ...rest] = [1, 2, 3, 4, 5, 6];
console.log(a, b, rest);
}
//output:1 2 [3, 4, 5, 6]
{
let a, b;
({a, b} = {a:1, b:2})
console.log(a ,b);
}
//output: 1 2
使用場景
變數交換
{
let a = 1;
let b = 2;
[a, b] = [b, a];
console.log(a, b);
}
獲取多個函數值
{
function f(){
return [1, 2]
}
let a, b;
[a, b] = f();
console.log(a, b);
}
獲取多個函數返回值
{
function f(){
return [1, 2, 3, 4, 5]
}
let a, b, c;
[a,,,b] = f();
console.log(a, b);
}
//output: 1 4
{
function f(){
return [1, 2, 3, 4, 5]
}
let a, b, c;
[a, ...b] = f();
console.log(a, b);
}
//output: 1 [2, 3, 4, 5]
對象解構賦值
{
let o={p:42, q:true};
let {p, q, c=5} = o;
console.log(p ,q);
}
//output: 42 true 5
獲取json值
{
let metaData={
title: 'abc',
test: [{
title: 'test',
desc: 'description'
}]
}
let {title:esTitle, test:[{title:cnTitle}]} = metaData;
console.log(esTitle, cnTitle);
}
//Output: abc test