JavaScript 語法構成:陳述式、變數、運算子與保留字
在 JavaScript 中,每行指令被稱為 陳述式,並用分號(;)當作結尾,程式是由多個陳述式所組成。瀏覽器會由上而下、由左至右的執行這些陳述式。組成因子有註解、變數、分號、空白、運算子、關鍵字、函式、字符。
註解
註解區域內的程式是不會執行。因此,也可以用來做些筆記。
// 這是一行註解
/*
這是個區域註解
這是個區域註解
這是個區域註解
*/小提醒
註解的價值在於寫下 為什麼這樣做,而不是重複程式碼已經說得很清楚的事。除錯時把某段程式暫時註解掉,也是很常見的用法。
變數
變數可用來儲存資料、進行運算。
在國中應該都有學過代數吧!啥!?為什麼要提起國中的夢靨?別緊張!我們只會用最簡單的部分。例如:x = 10, y = 30, z = x + y,那 z 是多少?這應該回答的出來吧!?
如果換成 JavaScript 應該要怎麼寫呢?
const x = 10;
const y = 30;
const z = x + y;
console.log(z);const、let 與 var
| 關鍵字 | 可否重新賦值 | 作用域 | 建議 |
|---|---|---|---|
const | 不可 | 區塊 | 預設使用這個 |
let | 可 | 區塊 | 值真的需要變動時使用 |
var | 可 | 函式 | 舊寫法,不建議再用 |
const name = 'Away';
// 錯誤:Assignment to constant variable.
// name = 'Ivy';
let count = 0;
// 可以,count 變成 1
count = 1;小提醒
const 保證的是 變數不能被重新指向另一個值,並非內容不可改。物件用 const 宣告後,裡面的屬性還是能修改。作用域、提升與命名慣例的完整說明請看 變數與作用域。
分號
分號用在每一個陳述式的結尾。其實,也可以省略不寫,為了避免省略可能解析錯誤,還是請習慣性加上分號。
console.log(7533967);
console.log(7533967)空白
在 JavaScript 中,space、tab 鍵與換行符號都是空白。如下:
const obj = {
name: 'Away',
age: 20,
};
// 與上面一樣
const obj2 = { name: 'Away', age: 20 };空白不影響程式的執行結果,只影響 人 讀不讀得懂,所以實務上多半交給 Prettier 這類工具統一格式。
運算子
運算子是什麼東西?常用到的 +、-、*、/、= ...等。依用途大致可分成幾類:
| 類型 | 運算子 | 說明 |
|---|---|---|
| 算術 | +、-、*、/、% | 四則運算,% 為取餘數 |
| 賦值 | =、+=、-= | 把右邊的值指定給左邊 |
| 比較 | ===、!==、>、< | 回傳 true 或 false,常用在 條件判斷 |
| 邏輯 | &&、||、! | 且、或、非 |
注意
比較請用 === 而不是 ==。== 會先做型別轉換,導致 '1' == 1 成立這種容易踩雷的結果;=== 會連型別一起比對,行為好預測得多。
保留字
基本上保留字不能用作識別字,字面常數有特定代表的意義。例如:const、let、function、return、if、else、switch、class、new、this 都屬於保留字。
// 錯誤:Unexpected token 'function'
// const function = 10;函式、函數、方法、function
可以將多個陳述式,定義在某個區塊內執行單個任務。
console.log('Hello HTML');
console.log('Hello CSS');
console.log('Hello JavaScript');
// 下方的寫法只要 todo() 一次就會執行三個陳述式,且可以重複使用
function todo() {
console.log('Hello HTML');
console.log('Hello CSS');
console.log('Hello JavaScript');
}
todo();函式是 JavaScript 中最重要的一塊,完整的說明請看 函式的構成與使用 與 其他函式寫法。
字串
一般靜態文字。可以想像做永遠不會改變的文字,如下方單引號的內容。
document.querySelector('#Pic').src = './images/large.jpg';除了單引號與雙引號,ES6 之後還多了 樣板字串(反引號),可以換行,也能用 ${} 把變數直接嵌進字串裡:
const name = 'Away';
// Hello, Away!
console.log(`Hello, ${name}!`);常見問題
JavaScript 的分號可以不寫嗎?
可以,引擎會自動補上,這個機制叫 ASI(自動分號插入)。但少數情況它補的位置與您想的不同,例如:下一行以括號開頭時,因此建議習慣性加上分號。
宣告變數該用 const 還是 let?
預設用 const,只有真的需要重新賦值時才改用 let。這樣一眼就能看出哪些值會變動,也能避免不小心覆寫。var 屬於舊寫法,新程式碼不建議再用。
什麼是陳述式?
陳述式是一行完整的指令,例如:宣告變數、呼叫函式,通常以分號結尾。程式就是由一連串陳述式組成,瀏覽器由上而下、由左至右依序執行。
保留字是什麼,為什麼不能當變數名稱?
保留字是語言本身已賦予意義的字,例如:const、function、if、return。若拿來當變數名稱,引擎會無法判斷該段程式的意圖而拋出語法錯誤。
單引號、雙引號與反引號有什麼差別?
單引號與雙引號功能相同,選一種並在整份專案保持一致即可。反引號是 ES6 的樣板字串,可以換行,也能用 ${} 直接把變數嵌進字串中。