前言
本文為「JavaScript 30」教學影片的學習筆記。
目標
了解 JavaScript 的「By Value」和「By Reference」觀念。
筆記
在 JavaScript 中,Boolean、String、Number、null 和 undefined 都屬於「By Value」。
1 | let age = 100; |
age和age2是存在於不同的兩個記憶體位置,因此彼此並不會乎相干擾影響。
在 JavaScript 中 Array 屬於「By Reference」。
1 | const players = ['Wes', 'Sarah', 'Ryan', 'Poppy']; |
players和team其實是被指稱到相同的位置,當其中一個陣列的値改變,另一個陣列的値也會跟著改變。
要複製一個陣列,可以使用以下方法:
1 | const team2 = players.slice(); |
slice()方法會回傳一個新陣列物件,為原陣列選擇之 begin 至 end(不含 end)部分的淺拷貝。concat()方法被用來合併兩個或多個陣列。...展開運算子允許一個表達式在某處展開。Array.from()方法會從類陣列(array-like)或是可疊代(iterable)物件建立一個新的陣列實體。
在 JavaScript 中 Object 也屬於「By Reference」。
1 | const person = { |
person和captain被指稱到相同的位置,當其中一個的値改變,另一個的値也會跟著改變。
要複製一個物件,可以使用以下方法:
1 | const cap2 = Object.assign({}, person, {number: 99}); |
Object.assign()用來複製一個或多個物件自身所有可數的屬性到另一個目標物件。...展開運算子允許一個表達式在某處展開。用在拷貝物件時,只有第一層能被拷貝。JSON.stringify()函式將値轉換為以 JSON 表示的字串。JSON.parse()函式將 JSON 表示的字串轉換為數値或是物件。