0%

今天我們來談談 JavaScript 的空格是什麼吧 !

空格 (Whitespace)

空格是指可以在程式碼中建立文字空間 (Literal Space) 的無形字元 (Invisible Character),像是 Carriage returns (Enter), tabs, spaces,它們可讓我們的程式碼有更高的可讀性,但不會被真正的執行。

閱讀全文 »

當我們遇到 Dangerous Aside 的單元,代表我們要警告一些程式語言真正危險的地方,沒有程式語言是完美的,我們已經看過幾個 JavaScript 需要注意的地方,但這個單元要講的是真正危險的地方,會非常容易犯錯,也很難追蹤,是我們一定要避免的情況,此次的 Dangerous Aside 與 JavaScript 的語法解析器和它的自動插入分號 (Automatic Semicolon Insertion) 有關。

閱讀全文 »

先前我們已經討論過語法解析器的主題,今天我們要來加深這部分的觀念,這對之後出現的東西相當重要。

語法解析器 (Syntax Parsers)

我們的程式碼不會被電腦直接執行,而是有個中介程式 (intermediate program) 在程式碼和電腦中間轉換我們的程式碼為電腦懂的指令,瀏覽器的 JavaScript 引擎就是在做這件事,它包含許多的東西,其中一個就是語法解析器,會讀取我們的程式碼,並確認是否有效。

閱讀全文 »

今天我們再次來討論如何將我們所學的應用到框架或函式庫中,我們先花一些時間來了解 JavaScript 所沒有,但其他程式語言有的,以及為何對 JavaScript 不重要的東西,這個東西是 function overloading (重載函式)。

Function Overloading (重載函式)

在其他的程式語言 (C#, C++, Java) 都有 function overloading 的概念,這表示我們能讓相同名稱的 function 能夠擁有不同數量的參數,這在 JavaScript 是不行的,因為 function 是物件 (即是參數的數量不同,還是會參照到同一個位址),所以 JavaScript 沒有這類處理 function 的功能。

閱讀全文 »

今天我們要來談談 JavaScript 的另一個特殊關鍵字,是 JavaScript 引擎在執行 function 時自動設定好的,我們稱之為 arguments (參數),而在下一版的 JavaScript 中,可能不會這麼常使用 arguments,我們會提到一個新的方法來處理 arguments 所做的事情,那便是 Spread,不過如果我們去看那些框架或函式庫,還是能在程式碼中看到 arguments 出現。

閱讀全文 »

今天我們來了解 JavaScript 的陣列 (array) 是什麼吧 !

陣列 (Array)

陣列是包含許多東西的集合,可以被宣告。

我們可以使用 new Array() 的方式來宣告陣列。

1
var arr = new Array();

或是使用更簡短的方式,使用陣列的實體語法來宣告,這與物件實體語法類似,但不是用 {},而是使用 []

閱讀全文 »

我們討論過 function 是物件,有屬性和其他的東西,今天我們來討論當 function 被呼叫時會發生哪些事情。

Function 執行時

function 和物件不同,有 NAME 屬性和 CODE 屬性,當 CODE 屬性被呼叫時,會建立新的執行環境,放到執行堆中,這決定了程式要怎麼執行,我們來想像一下,當我們呼叫 CODE 屬性時,會發生什麼事 ?

閱讀全文 »

今天我們來了解 by value 和 by reference,這是 JavaScript 重要觀念之一,有助於我們開發、除錯 JavaScript 程式和認識後面重要的觀念。

注意:這章節我們都是在討論變數。

By Value

我們透過一些例子來了解吧,現在有一個變數 a,賦予它一個純值 (像是數值、布林、字串…),它會指向純值在記憶體中的位址。

閱讀全文 »

今天我們來討論 JavaScript 最基本、最重要的觀念,從只會使用 JavaScript 到深入了解它,我們就先來介紹 — first-class functions 吧 !

本篇重點:在 JavaScript 中,functions 是物件

First-Class Functions (頭等函式)

閱讀全文 »