es6允許按照一定模式從陣列和物件中提取值,然後對變數進行賦值,這被稱為解構賦值。
如下:
let [a,b,c,d] = [1,2,3,4]
a // 1
b //2
c //3
d //4
let [e, [[f], g]] = [1 , [[2], 3]];
e //1
f //2
g // 3
如果解構不成功那麼變數的值就是undefined
let [x, y, ...z] = [2] ;
x //2
y //undefined
z //
如果等號的右邊不是陣列,那麼將會報錯
let [q] = false;
let [r] = nan;
let [s] = null;
let [t] = {}
// false is not iterable
上面的式子都會報錯,因為等號的右邊的值或是轉為物件以後不具備iterator介面,或是本身就不具備iterator介面。
對於set結構也可以使用陣列的解構賦值
let [x, y, z] = new set(['a','b','c']);
x // "a"
事實上,只要某種資料結構具有iteterator介面,都可以採用陣列形式的解構賦值。
解構不僅可以用於陣列,還可以用於物件
let =
foo // '1'
bar // '2'
物件的解構與陣列有乙個重要不同。陣列的元素是按次序排列的,變數的取值是由它的位置決定的;而物件的屬性沒有次序,變數必須與屬性同名才能取到正確的值。
let =
baz //undefined
bas //234
bat //aaa
物件的解構也可以指定預設值
var = ;
x // 1
y //5
const [a,b,c,d,e] = 'hello'
a //"h"
b // "e"
c // "l"
d // "l"
d // "o"
解構賦值時,如果等號右邊是數值或者布林值,則會先轉為物件。
let = 123 ;
s === number.prototype.tostring
let = true;
b === boolean.prototype.tostring
上面**中,數值和布林值包裝物件隊友tostring屬性,因此解構賦值都能取到值。
函式的引數也可以使用解構賦值
function add([x,y])
add([5,6]) //11
函式引數也可以使用預設值
function test(={})
test() // [4,5]
test() // [1,"6"]
test({}) // [1,2]
test() // [1,2]
es6變數解構賦值
es6允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構。解構賦值在實際開發中可以大量減少我們的 量,並且讓我們的程式結構更清晰。陣列的解構賦值 let a,b 1 2 console.log a 1 console.log b 2 上面的 表示,可以從陣列中提取值,按照位置的物件...
ES6變數解構賦值
es6 允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構 es6之前我們申明多個變數需要按照下面的方法 let l a 1 let b 2 let c 3 let d 4 或者 let a 1,b 2,c 3,d 4 現在我們可以更加簡便 let a,b,c,d 1,2,3,4 ...
es6 變數解構賦值
1.陣列的解構賦值 等號兩邊的模式相同,左邊的變數就會被賦予對應的值 預設值 undefined型別只有乙個值,即undefined。當宣告的變數還未被初始化時,變數的預設值為undefined。null型別也只有乙個值,即null。null用來表示尚未存在的物件,常用來表示函式企圖返回乙個不存在的...