閉包 Closure

當 function 執行完之後,會進行記憶體釋放,也就是說 function 內的變數就再也找不到了。
但如果希望留住 function 內的資料狀態,可以透過閉包的手法。

繼續閱讀

Git 跨平台開發 未修改的檔案出現異動(換行警告、檔案權限)

嘗試把一個大專案從 SVN 移到 Git 時,發現從 Windows 環境作 git clone 的時候,檔案會莫名奇妙的有異動,而這個異動卻從文件比對看不出有差異。

過程中試了很多方法才終於解決,以下是完整的過程,文章最後紀錄跨平台開發的情境下應該做哪些 Git 設定。

繼續閱讀

JavaScript 如何區分表達式(Expression)與陳述式(Statement)?

JavaScript 怎麼理解我們輸入的東西?

就跟我們的對話一樣,透過「單詞」拼湊出來「一句話」,這樣我們就可以知道對方想要表達的事情是什麼。

而 JavaScript 則是分析你寫的程式碼是「表達式」還是「陳述式」,來知道你想要做的事情是什麼。

繼續閱讀

JavaScript 陣列排序 sort

預設排序

array.sort()是以字串的 Unicode 編碼位置來排序陣列中的元素。

1
2
3
let fruit = ['Orange', 'Banana', 'Apple', 'Cherry']
fruit.sort()
console.log(fruit); // [ 'Apple', 'Banana', 'Cherry', 'Orange' ]

自訂義排序

若用sort()來排序「數字」,我們也會得到「照字母排序」的結果。

繼續閱讀

問題思考 - 如何保留資料狀態

最近剛結束一個case,是一個滿有挑戰的任務,這裡做成一個小專案來記錄自己的解題思路。
情境 1 是已經存在的規則或邏輯,我主要處理的部分為情境 2。
在不改變原始的資料的情況下,怎麼讓兩筆資料合併為一筆,並且保留兩筆資料的狀態?

繼續閱讀

JavaScript Scope Chain 與 Closure

Scope 到底是指哪裡?

Scope 是變數的有效範圍。

function 裡面是 local,指的是在 local 這個範圍裡面有效。

function 外面是 global,指的是在 global 這個範圍裡面有效。

繼續閱讀

JavaScript Bind Call Apply

認識 bind, call, apply 這三個方法之前,先說說 functionthis

function 是 object

在 JavaScript 裡,幾乎所有的東西都是 object,function 也不例外。

繼續閱讀