ES6,數組的擴展,擴展運算符(...)。


擴展運算符(spread)是三個點(...)。它好比 rest 參數的逆運算,將一個數組轉為用逗號分隔的參數序列。

let array = [5,10];
let items = [1,2];
array.push(...items) console.log(array); //[5,10,1,2]

擴展運算符后面還可以放置表達式。

const arr = [ ...(x > 0 ? ['a'] : []), 'b', ];


1.代替apply
// ES5 的寫法 function f(x, y, z) {  // ... } var args = [0, 1, 2]; f.apply(null, args);  // ES6的寫法 function f(x, y, z) {  // ... } let args = [0, 1, 2]; f(...args);

 

另一個例子是通過push函數,將一個數組添加到另一個數組的尾部。

// ES5的 寫法 var arr1 = [0, 1, 2]; var arr2 = [3, 4, 5]; Array.prototype.push.apply(arr1, arr2);  // ES6 的寫法 let arr1 = [0, 1, 2]; let arr2 = [3, 4, 5]; arr1.push(...arr2);



(2)合並數組

擴展運算符提供了數組合並的新寫法。

const arr1 = ['a', 'b']; const arr2 = ['c']; const arr3 = ['d', 'e'];  // ES5 的合並數組 arr1.concat(arr2, arr3); // [ 'a', 'b', 'c', 'd', 'e' ]  // ES6 的合並數組 [...arr1, ...arr2, ...arr3] // [ 'a', 'b', 'c', 'd', 'e' ]





二、對象的擴展
const foo = 'bar';
const baz = {foo};
baz // {foo: "bar"}

// 等同於
const baz = {foo: foo};

除了屬性簡寫,方法也可以簡寫。

const o = { method() { return "Hello!"; } };  // 等同於 const o = { method: function() { return "Hello!"; } };

 

變量的解構賦值用途很多。

(1)交換變量的值

let x = 1; let y = 2; [x, y] = [y, x]; 

上面代碼交換變量xy的值,這樣的寫法不僅簡潔,而且易讀,語義非常清晰。

(2)從函數返回多個值

函數只能返回一個值,如果要返回多個值,只能將它們放在數組或對象里返回。有了解構賦值,取出這些值就非常方便。

// 返回一個數組 function example() { return [1, 2, 3]; } let [a, b, c] = example();  // 返回一個對象 function example() { return { foo: 1, bar: 2 }; } let { foo, bar } = example();



(4)提取 JSON 數據

解構賦值對提取 JSON 對象中的數據,尤其有用。

let jsonData = { id: 42, status: "OK", data: [867, 5309] }; let { id, status, data: number } = jsonData; console.log(id, status, number);





三、編碼風格

解構賦值

使用數組成員對變量賦值時,優先使用解構賦值。

const arr = [1, 2, 3, 4];  // bad const first = arr[0]; const second = arr[1];  // good const [first, second] = arr;
 

字符串 § 

靜態字符串一律使用單引號或反引號,不使用雙引號。動態字符串使用反引號。

// bad const a = "foobar"; const b = 'foo' + a + 'bar';  // acceptable const c = `foobar`;  // good const a = 'foobar'; const b = `foo${a}bar`;




函數的參數如果是對象的成員,優先使用解構賦值。

// bad function getFullName(user) { const firstName = user.firstName; const lastName = user.lastName; }  // good function getFullName(obj) { const { firstName, lastName } = obj; }  // best function getFullName({ firstName, lastName }) { }



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM