iT邦幫忙

2024 iThome 鐵人賽

DAY 4
0

今天要來學習 JavaScript 以及 Node.js 的基本語法,包括變數宣告、條件判斷、迴圈、函數等基礎知識,為後續的開發奠定基礎。

變數宣告

Node.js 主要有 var、let 和 const 變數宣告方式。這三種方式的區別在於作用域和是否允許重新賦值。

  • var: 具有函數作用域,可以重新賦值,但在現代開發中較少使用,因為作用域管理不夠嚴格。
  • let: 具有區塊作用域,可以重新賦值,適用於大多數情況。
  • const: 具有區塊作用域,不允許重新賦值,適合用來宣告常數或不變的變數。
    比如說以下程式碼:
js
let x = 10;
x = 20;

這種的是合法的;如果現在X依舊是10

js
const x=30

這樣就會導致錯誤,因為 const 無法重新賦值。

資料型別

Node.js 與 JavaScript 的資料型別相同,常見的有以下幾種:

  • Number: 數字型別,例如 123 或 3.14。
  • String: 字串型別,例如 'Hello' 或 "World"。
  • Boolean: 布林值,只有 true 或 false。
  • Array: 陣列,可以存放多個值,例如 [1, 2, 3]。
  • Object: 物件,用於存放鍵值對,例如 { name: "John", age: 30 }。
    範例如下:
js
const name = "Jimmy";
const age = 19;
const isStudent = true;
const hobbies = ["reading", "coding"];
const person = { name: "Jimmy", age: 19 };

條件判斷

在 Node.js 中,常用的條件判斷有 if、else if、else 和 switch。
if 條件語句: 根據不同的條件來去執行不同的程式碼。

js
let age = 20;

if (age >= 18) {
  console.log("You are an adult.");
} else {
  console.log("You are a minor.");
}

https://ithelp.ithome.com.tw/upload/images/20240918/20169444gs7igNPBBl.png
switch 條件語句: 適合用來處理多種不同情況的條件判斷。

js
let fruit = "apple";

switch (fruit) {
  case "apple":
    console.log("You selected an apple.");
    break;
  case "banana":
    console.log("You selected a banana.");
    break;
  default:
    console.log("Unknown fruit.");
}

https://ithelp.ithome.com.tw/upload/images/20240918/20169444f4ogjzOqH0.png

迴圈

迴圈用來重複執行某段程式碼,常見的迴圈有 for、while 和 do...while。
for 迴圈: 用於執行已知次數的重複動作。

js
for (let i = 0; i < 5; i++) {
  console.log(i);
}

實際打入 Node.js ,執行結果會如下:
https://ithelp.ithome.com.tw/upload/images/20240918/20169444zBxdU3jk67.png
** while 迴圈:** 在條件為 true 時重複執行程式碼。

js
let i = 0;
while (i < 5) {
  console.log(i);
  i++;
}

實際打入 Node.js ,執行結果會如下:
https://ithelp.ithome.com.tw/upload/images/20240918/20169444f22ZDFEJcH.png
do...while 迴圈: 與 while 類似,但無論條件是否為 true,都至少會執行一次。

js
let i = 0;
do {
  console.log(i);
  i++;
} while (i < 5);

實際打入 Node.js ,執行結果會如下:
https://ithelp.ithome.com.tw/upload/images/20240918/20169444H6RNdLnHRG.png

函數

函數是可以重複執行的程式碼塊,Node.js 支援命名函數和匿名函數。
命名函數: 使用 function 關鍵字來定義,然後在需要的地方呼叫。

js
function greet(name) {
  return `Hello, ${name}!`;
}

console.log(greet("Jimmy")); 

實際打入 Node.js ,執行結果會如下:
https://ithelp.ithome.com.tw/upload/images/20240918/20169444vuLskwm6Uv.png
箭頭函數: 是一種較為簡潔的函數表達式,使用 => 語法來定義,這也是一種匿名函數。

js
const greet = (name) => `Hello, ${name}!`;
console.log(greet("Jimmy")); 

實際打入 Node.js ,執行結果會如下:
https://ithelp.ithome.com.tw/upload/images/20240918/20169444vur0Uu11sc.png

異步編程基礎

Node.js 的一大特色就是它的非阻塞、事件驅動架構。代表當程式進行 I/O 操作(如讀寫檔案、訪問 API 等)時,程式不會被阻塞,這可以通過回呼函數、Promise 和 async/await 來實現異步操作。
回呼函數: 當一個函數執行完畢時,會執行指定的回呼函數。

js
function fetchData(callback) {
  setTimeout(() => {
    callback("Data loaded");
  }, 2000);
}

fetchData((message) => {
  console.log(message); 
});

實際打入 Node.js ,在經過兩秒後,執行結果會如下:
https://ithelp.ithome.com.tw/upload/images/20240918/20169444HfUepVbjqn.png
Promise: 用來解決回呼函數的可讀性問題。

js
const fetchData = () => {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve("Data loaded");
    }, 2000);
  });
};

fetchData().then((message) => {
  console.log(message); 
});

實際打入 Node.js ,在經過兩秒後,執行結果會如下:
https://ithelp.ithome.com.tw/upload/images/20240918/20169444Oz1xuxgPGB.png
async/await: 是基於 Promise 的語法糖,使異步程式碼看起來更像同步程式碼。

js
const fetchData = () => {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve("Data loaded");
    }, 2000);
  });
};

const loadData = async () => {
  const message = await fetchData();
  console.log(message); 
};

loadData();

實際打入 Node.js ,在經過兩秒後,執行結果會如下:
https://ithelp.ithome.com.tw/upload/images/20240918/20169444JfGHDbZH4r.png

總結

今天學習了 Node.js 的基本語法,包括變數宣告、條件判斷、迴圈和函數等。這些基礎語法為的就是去理解和編寫 Node.js 應用程式的核心知識。接下來,將進一步學習 Node.js 的異步編程模式,並瞭解事件驅動架構。


上一篇
Day 3: 安裝 npm 並理解其基礎功能
下一篇
Day 5: Node.js 內建模組:fs 檔案系統
系列文
30 天 Node.js 探索:基礎、進階與實踐30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言