前端基礎

-

JavaScript 基本使用 - 變數、型別、運算、流程控制、迴圈

this.web

上篇文章介紹了 JS 是什麼,以及它可以幹嘛,接下來就正式進入教學吧!

基本準備

在開始學習 JavaScript 之前,要先有可以寫 JavaScript 的工具,這邊推薦由微軟開發的免費軟體 vs code,點進網站直接下載安裝即可。

接著,我們在桌面新增一個資料夾,叫做 JS 教學,並在裡面新增一個 HTML 檔案,叫做 js教學.html,並用 vs code 打開這個資料夾。

然後我們可以在 html 檔案中,打上 ! 並按下 tab,vs code 就會快速幫你寫出 html 架構了!

在哪裡寫 JS

我們可以在兩個地方寫 JS,第一個地方是直接在 HTML 裡的 <body> 最下面,打上 <script> ... </script> 標籤,並在 <script> 中寫 JS,如下:

<body>
  
  <!- 其它 HTML ->

  <scipt>
      // 在這裡寫你的 JS
  </scipt>
</body>

第二個地方是在 HTML 外部寫 JS,並從 HTML 引入 JS 檔案,我們在資料夾新增一個額外的 JS 檔案,叫做 js教學.js,就可以在 HTML 引入,引入方法也是在 <body> 的最下面打上 <script> 標籤,並在標籤內寫上 src (來源) 即可:

<body>
  <!- 其它 HTML ->

  <script src="./js教學.js" />
</body>

第二種方法較常使用,因為如果 JS 程式碼很多的話,會讓整個 HTML 檔案變得不易閱讀,所以等等我們都用第二種方式教學。

如何打印出值

接著我們來試著寫出你的第一個程式碼,我們在 js教學.js 裡打上這段程式碼並儲存,然後打開 HTML 看一下 (要記得引入 JS 檔案喔):

alert('hello world');

打開 HTML 檔案後會發現瀏覽器跳出一個 hello world 的提示框了! (放上圖片)

alert 正是跳出提示框的意思,只要裡面放上值,就可以查看了!

不過 alert 有個小缺點,就是在按下確認鍵之前,下面的程式碼都不會執行,也就是會阻塞程式碼,這在某些時候不是好事,所以我們更常用第二種方法來打印出值,如下所示:

console.log('hello world');

儲存後,在瀏覽器中按下 F12 可以打開控制台,並點到 console 頁面,就可以看到我們輸入的值了!

JS 變數 variable

OK!我們已經會輸入 JS 了,不過剛剛我們是直接輸入值,如果我們要輸入 10 次的 'hello world',難道要手動打十遍嗎?不! 所以我們會把值儲存給一個變數,這個變數就像是一個儲存空間的地方,比如說,我把 'hello world' 儲存給 x:

let x = 'hello world';

此時我們就可以直接打印 x,就會輸出 hello world 了:

console.log(x)

JS 中的資料型別 data type

資料型別就像是資料的類別、分類,在 JS 中常見的型別有:

  1. number: 數字
  2. string: 字串、文字
  3. boolean 布林: true / false (對 / 錯)
  4. array: 陣列,對岸習慣叫做數組
  5. object: 物件,對岸習慣叫做對象

例如我們剛剛輸入的 hello world 就是字串 string,如果要輸入字串,就必須像我一樣用單引號 '' 或是雙引號 "" 包住值,這兩種作法在 JS 中沒有差別,看你習慣用哪一個都可以。

我們也可以輸入數字並打印出來看看:

let y = 10;
console.log(y);

儲存後就會發現控制台多了 10。

接著我們也來打印 boolean 看看。

let z = false;
console.log(z);

一樣儲存後打開控制台就會看到 false

宣告變數的方法

宣告變數的意思就是製作變數,像是剛剛我們都用 let 關鍵字來製作變數對吧,其實在 JS 中有三種宣告變數的方法,分別為 varletconst,我來簡單介紹一下它們的差別:

  1. var: 舊版 JS 的宣告方式,很多沒更新的教學文章都還是用這個,建議不要使用這種方式,因為它會造成變數提升和重複宣告的問題,這個還不懂沒有關係,之後再看就好。
  2. let: ES6 新增的方式,建議用這個,因為他不會變數提升,也不能重複宣告。
  3. const: ES6 新增的方式,使用它宣告的變數就不能在改變了。

懶人包,不要var只用 let  const

更詳細的比較可以參考 JavaScript 重要觀念 - var、let、const 差別

修改變數的值

修改變數的值非常簡單,只要直接覆蓋就可以了,例如:

let x = 1;
x = 2;
console.log(x);

儲存後打印出來就是 2 了。

要注意的是,如果用 const 宣告變數就不能修改了喔,而且一定要在宣告變數的時候就給它值:

// 錯誤
const x;

// 錯誤
const y = 1;
y = 2;

// 正確
const z = 3;

所以 const 是用來宣告確定不會改變的值。

JS 註解

有時候我們想在程式碼上面寫一些筆記,方便之後回來看得懂自己在寫什麼,而這些筆記不能被程式碼執行,此時就可以使用註解,其實剛剛也偷用到了,就是兩條斜線 //:

// 這是註解,程式碼不會執行被註解的地方

// 是註解一行,如果要一次註解很多行,可以使用 /* */,例如:

/*

裡面的東西都被註解起來了

*/

在 vs code 中,可以按下 ctrl + / 來快速的註解喔!

變數的命名規則

變數的名字式不能亂取的,有以下這些規則

  1. 變數名稱必須以字母、下劃線(_)或美元符號($)開頭,不能以數字開頭
  2. 變數名稱只能包含字母、數字、下劃線或美元符號。
  3. 變數名稱區分大小寫,例如 myVariableMyVariable 是兩個不同的變數。

通常命名會有描述性,也就是大概描述這個變數是甚麼,比如:

let userName = 'Jack'; // 正確做法
let x = 'Jack' // 非常不好的做法

JS 運算

程式語言最厲害的地方就是運算超快,在 JS 也有很多運算的方法,叫做運算符,例如 1 + 2+ 就是加法運算符。

一般做運算的運算符叫做算術運算符有,加、減、乘、除、餘數、次方:

let x = 1 + 2; // 3
let y = 2 - 1; // 1
let z = 3 * 2; // 6 此為乘法運算符
let k = 6 / 3; // 2 此為除法運算符
let p = 8 % 3; // 2 此為餘數運算符,就是 8 / 3,剩下的數字
let q = 2 ** 3; // 8,此為次方運算符,就是 2 的 3 次方

還有另外兩個特別的運算符,++--,也很簡單,就是自身的數值加 1 或減 1

let x = 1;
console.log(++x) // 2

let y = 3;
console.log(--y) // 2

要注意的是,++-- 放在變數前後會不太一樣,放在變數前代表先加完再執行程式碼,放在變數後代表先持行程式碼在加 1,例如下面的程式碼

let x = 1;
console.log(x++) // 打印出 1,因為放在後面,所以先執行程式碼才會加 1
console.log(x) // 2, 此時已經加完了,在打印一次就變 2 了

除了讓自身 + 1 以外,也可以使用 += 運算符來決定要自身加多少,比如:

let x = 1;
x += 10; // 等於 x = x + 10
console.log(x) // 11

也可以搭配其他算術運算符:

let x = 2;
x *= 10 // 20
x -= 10 // - 8
x /= 2 // 1

要注意的是,程式語言裡面的等號,其實是指派的意思,將右邊的值只配給左邊,並不是像數學一樣要解方程式喔:

let x = 1;
x = x + 1; // 將右邊的值 2, 指派給左邊的變數

JS 判斷

在 JS 中如果要比較大小,就可以使用比較運算符,其實就是國中學的大於小於符號:

2 > 1 // 大於, true
2 < 1 // 小於, false
1 >= 1 // 大於等於, true
1 <= 1 // 小於等於, true

2 == 2 // 等於, true
2 != 2 // 不等於, false

等於比較特別一點,要打兩個等號才是比較的意思; 而不等於是的寫法是 ! + =

但在 JS 中,我更建議使用三個等號,三個等號是嚴格等於的意思; 嚴格不等於是 ! + 兩個 =

1 == '1' // true
1 === '1' // false

1 != '1' // false
1 !== '1' // true

可以發現兩個等號會誤判它們的型別,這樣可能會讓程式發生預料之外的錯誤。

if-else 流程控制

如果我們希望在條件成立時執行某些程式,就可以使用 if-else 判斷式,比如:

let x = 1;
let y = 2;

if (y > x) {
	console.log('y 比 x 大')
} else {
	console.log('y 比 x 小')
}

如果我們要判斷多種情況就可以使用 else if (...) 例如:

let x = 1;
let y = 2;

if (y > x) {
	console.log('y 比 x 大');
} else if (y === x) {
	console.log('y 和 x 一樣大');
} else {
	console.log('y 比 x 小');
}

JS 迴圈 loop

在某些時候,我們可能希望程式碼重複執行多次,比如說:

let x = 1;
x++;
x++;
x++;
console.log(x) // 4

此時就可以使用迴圈來解決:

let x = 1;
for (let i = 0; i < 4; i++) {
	x++;
}
console.log(x) // 4

而 JS 有兩種迴圈,分別是 for 迴圈和 whilt 迴圈,我們先來看看 for 迴圈:

for 迴圈

for 迴圈的語法為:

for (語句1; 語句2; 語句3) {
	// 你要執行的程式碼
}
  • 語句1: 迴圈執行前的設定
  • 語句2: 迴圈是否執行的條件
  • 語句3: 迴圈執行完一次後要做的是

舉剛剛的例子來說

for (let i = 0; i < 4; i++) {
	x++;
}
  • 迴圈執行前: 讓變數 i 為 0
  • 迴圈執行的條件: i < 4
  • 每執行完一次: i + 1

while 迴圈

while 迴圈的語法較簡單:

while (條件判斷) {
	// 你要執行的程式碼
}

例如:

let x = 1;
while (x < 10) {
	x++;
	console.log(x);
}

當 x < 10 時,就會不斷重複執行迴圈,所以再用 while 時,一定要注意條件判斷,如果條件永遠成立,那迴圈就永遠不會停止,就可能會讓瀏覽器當掉喔。

小結

今天我們介紹了 JS 的一些基本用法,包括變數、型別、運算符、if-else、迴圈,也有提到一些新手要注意的地方,例如變數的名稱、兩個等於和三個等於的差別、while 迴圈的條件等等,要自己動手做一次印象才會深喔!

相關系列文章