0%

在上一篇中,我們已經探討過基本型別,今天我們來深入了解另一個觀念,可以幫助我們順利除錯 (debug) 和了解其他因為動態型別而產生的問題,我們就來聊聊什麼是運算子 (operators) 吧 !

運算子 (Operators)

運算子是一個特殊的 function,和我們自己寫的 function 有很大的不同,通常來說,運算子需要參數來回傳一個結果。

閱讀全文 »

今天來了解在 JavaScript 中變數 (variables) 的基本資料型別吧 !

當我們宣告變數時,不用特別宣告變數的資料型別,JavaScript 會自動幫我們判定資料的型別,而在 JavaScript 中有六種純值 (primitive types,又稱基本型別),在談這六種純值之前,我們先來聊聊什麼是純值。

閱讀全文 »

JavaScript 與其他語言相當的不同,特別是在變數的資料和型別的部分,和 JavaScript 處理他們的方式。

我們先來了解 JavaScript 處理型別的方式的名詞。

動態型別 (Dynamic Typing)

你不用告訴 JavaScript 你的變數是何種型別,不需要在程式裡寫出來,JavaScript 會在程式執行時知道你的變數型別是什麼。

閱讀全文 »

我們先前有討論過 JavaScript 的同步,以及如何同步執行,今天我們就來討論什麼是非同步回呼 (asynchronous callbacks) 吧 !

在了解非同步回呼之前,我們先來了解什麼是非同步 (asynchronous)。

非同步 (asynchronous)

表示在同一個時間點不只有一個程式在執行。

閱讀全文 »

到現在,我們已經認識執行環境、變數環境、詞彙環境和外部環境,而這些最終定義了範圍鏈 (Scope Chain,每個正在執行的 function 都有的外部參照)。

講了這麼多,你知道 Scope 是什麼嗎 ?

Scope

Scope 表示變數可以被取用的範圍。

如果有相同的 function 呼叫兩次,會各自產生執行環境,即便裡面的變數相同,但在記憶體中,他們是不同的變數。

閱讀全文 »

我們已經了解執行堆、執行環境和變數環境,今天我們就來認識什麼是範圍練 (The Scope Chain) 吧 !

先讓我們來看這個範例程式碼吧,當我們執行到 function b 時,會發生什麼事呢 ?

1
2
3
4
5
6
7
8
9
10
11
function b() {
console.log(myVar);
}

function a () {
var myVar = 2;
b();
}

var myVar = 1;
a();
閱讀全文 »

今天我們來了解另一個 JavaScript 進階的觀念:變數環境 (variables environment)。

變數環境 (variables environment)

何謂變數環境

變數環境 (variables environment) 是指建立變數的位置,而在 JavaScript 中,每個執行環境都有屬於自己的變數環境

閱讀全文 »

今天我們要來了解 function 是如何被呼叫,以及是如何執行的,這對了解 JavaScript 進階的觀念有很大的幫助。

function 呼叫 (function invocation)

在來了解 function 呼叫前,我們先來談談什麼是呼叫 (invocation)

呼叫 (invocation) 表示執行 function。

閱讀全文 »

今天來了解 JavaScript 中的單執行緒 (Single Threaded) 和同步執行 (Synchronous Execution)。

單執行緒 (Single Threaded)

單執行緒 (Single Threaded) 表示一次執行一個指令,簡單來說,就是 JavaScript 一次只做一件事。

閱讀全文 »

之前我們有提到,在 JavaScript 產生執行環境時,會有創造階段與執行階段,創造階段是將變數 和 function 加入到記憶體中,那執行階段呢?

今天我們就來談談執行階段會做什麼。

執行階段 (Execution Phase)

先前我們知道,創造階段會建立全域物件、this 變數和外部環境,而你的程式碼中的變數和 function 會被加入到記憶體中 (提升 Hoisiting),並且變數會被賦予 undefined 的值。

閱讀全文 »