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 如何複製陣列?

做陣列資料裡的時候,有時候不希望異動到原始的資料,所以會將資料複製一份來用。

但問題是,在 JavaScript ,如果直接把陣列賦值給新的變數來用,一樣會改到原本的資料。

繼續閱讀

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 也不例外。

繼續閱讀

用不同的寫法來實作 Todolist

為什麼大家都在做 TodoList?

因為 Todolist 包含完整的 CRUD 行為,又功能需求不複雜,很適合當作小專案來練習。

最近六角學院的公開活動 Vue3 夏令營,還有自己練習 JavaScript 的關係,用不同的寫法實作 Todolist 後,總結出上述的心得。

在這裡記錄一下寫法上的差異。

繼續閱讀

JavaScript 變數作用域 Variable Scope

變數的作用域(Scope)

作用域是指變數的有效範圍。

常聽到的全域變數(global variable)通常是指:全域變數是不在任何function(){}內的變數,換句話說,全域變數是在任何地方都可以用的變數。

全域變數相反,function(){}內的變數稱為區域變數(local variable)

繼續閱讀

JavaScript 變數提升 Variable Hoisting

變數的提升(Hoisting)

在其他程式語言裡面,程式碼是逐步執行的,所以「把要做的事情放在宣告之前」,就會出錯。

但在 JavaScript 並不會出錯,因為執行程式碼之前,會先把宣告的函式或變數放到記憶體中,直到程式執行的時候,函式或變數就已經存在了。(感覺像是宣告的東西被提升到要做的事情之前,但實際不是)

要做的事情放在宣告之前,仍然可以繼續執行的現象叫做提升(Hoisting)

繼續閱讀