JS 觀念 - Promise 非同步

Promise 物件代表一個即將完成、或失敗的非同步操作,以及它所產生的值。

非同步觀念

非同步行為會在所有程式碼執行完後才執行,因此看到非同步行為,執行順序就放最後。

就算 setTimeout 設定 0 秒,一樣不會改變它最後執行的順序。

JS 觀念 - 物件傳參考特性、淺拷貝、深拷貝

物件傳參考

物件是以傳參考的形式賦值

  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    const person = {
    name: '小胖',
    obj: {}
    }

    const person2 = person;

    person2.name = '阿肥';

    console.log(person);

因為物件傳參考的特性(記憶體位置指向一樣),導致最後都在改同一個物件資料。

JS 觀念 - 箭頭函式的 this 指向差異

傳統函式與箭頭函式寫法差別

傳統函式

取有餘數的值(單數)

1
2
3
4
5
6
7
const arr = [1, 2, 3, 4, 5];

const filterArr = arr.filter(function(item) {
return item % 2 // 只要結果為真值就會回傳
})

console.log(filterArr); // [ 1,3,5 ]

JS 觀念 - this 指向

this 指向

1
2
3
4
5
6
7
8
9
this 的指向為何
var obj = {
name: '小明',
fn: function(params) {
console.log(params, this, window, arguments);
}
}

obj.fn(1, 2, 3); // 這邊 this 指向 obj


JS 觀念 - ES6 縮寫

什麼是語法糖?

語法糖讓程式更加簡潔,有更高的可讀性。語法糖不會影響程式運作,邏輯與當前 JS 一致。

物件字面值 Object literals

  • 物件內的函式

1
2
3
4
5
6
7
8
const apple = {
name: '蘋果',
fn: function() {
return this.name;
}
}

console.log(apple.fn());

直接將 fn: function() {} 改為 fn() {} 即可