Skip to content

Instantly share code, notes, and snippets.

hoisting in JavaScript

tags: javascriptES6hoisting

什麼是hoisting?

在「創造階段」所做的,在執行環境(Execution Contexts)為變數及函式保留記憶體空間的動作,就被稱為提升( Hoisting )。 例如:

// global是一個Execution Contexts
console.log(a) // undefined
var a = 5
console.log(a) // 5

深入學習javascript的ES6 - promise (上集)

tags: javascriptES6promise

同步與異步

  • 同步:一次做一件事,A做完換B。
  • 異步:同時做不只一件事,一起做A跟B。 嗯...,字面上來說,跟我認知的同步不一樣。 為什麼有這兩種區分呢?Javascript是單執行緒,一次跑一行,但有時候需要一次做好幾件事情。像是跟後端拿資料,如果沒拿到,後面的程式就不繼續跑了?一直停在那邊,母湯啦。

callback

深入學習javascript的ES6 - promise (下集)

tags: javascriptES6promise

這篇會著重於catch()。

Promise.prototype.catch方法是.then(null, rejection)或.then(undefined, rejection)的別名,用於指定發生錯誤時的callback function。

接續上集,報錯的時候,catch會捕捉到錯誤,但程式會因error停住而不往下嗎?

const someAsyncThing = function() {
  return new Promise(function(resolve, reject) {
  //沒有定義x,所以會跑reject去報錯

深入學習javascript的ES6 - WeakSet

tags: javascriptES6WeakSet

WeakSet

WeakSet 結構與Set 類似,也是不重複的值的集合。但是,它與Set有兩個區別。 1. WeakSet 的成員只能是可遍歷的結構(陣列、物件之類的)。

const a = [[1, 2], [3, 4]];//是a數組的成員成為WeakSet的成員,而不是a數組本身。
const ws = new WeakSet(a);
// WeakSet {[1, 2], [3, 4]}

深入學習javascript的ES6 - Set

tags: javascriptES6Set

Set的誕生

Set跟Array蠻像的。但javascript已經有Array,為什麼ES6還創造了Set? 雖然有了Array,但Set內的項目都是不重複的,而且可以接受不同型別做為Set內的項目。

Set

集合,是一個源自於數學理論中擁有不同元素的集合,其特性在於它是由一組無序且不重複的項目組成。你也可以想成是一個沒有重複元素和無順序的陣列。

Set本身是一個構造函數,用來生成Set數據結構。