JavaScript 新手入門教學:從基礎語法到 React 應用

更新於 發佈於 閱讀時間約 14 分鐘

終於要來到 JavaScript 的單元了, 因為學習的資料量太多,我將未來會寫的主題列出來(督促自己寫)回頭會再補上連結。

每周會帶到的重點:我會將相關主題的名詞放在同一類,難度逐步提升。

  1. Week 1:JS 基礎
    • 認識 JS 和 ES6 基本資料型別與物件 JS 地雷:typeof null 和 Coercion let、const、var 和作用域 變數提升(Hoisting)
  2. Week 2:函式與執行邏輯
    • 函式宣告、表達式、匿名函式、回呼函式 執行環境與作用域鏈 閉包與 IIFE
  3. Week 3:網頁操作
    • 認識 DOM 選擇器(getElementById、querySelector) 事件處理(addEventListener、事件冒泡、委託)
  4. Week 4:非同步程式設計
    • 事件循環與 setTimeout Promise 與 async/await
  5. Week 5:現代 JS 與應用
    • 陣列方法(map、forEach、reduce) 物件解構 原型鏈與 class React 基礎(函數組件、useState) JS 引擎簡介

模組 1:JS 入門:語法與基礎

這裡是學怎麼跟 JavaScript 打招呼,認識它的基本規則和容易踩的坑!

  1. ECMA 標準(ES6)
    • 這裡是學什麼:認識 JavaScript 的「遊戲規則」。ECMAScript 就像 JS 的說明書,告訴你這語言怎麼寫。ES6 是 2015 年出的新版規則,加入了很多好用的寫法(像 let 和箭頭函式),學 JS 就從這裡開始!
    • 白話解釋:想像 JS 是個廚房,ES6 教你怎麼用新款烤箱和刀具,做出更好吃的菜。
  2. 七種基本資料型別 vs. 物件(Primitive Data Type & Object, call by value, call by reference)
    • 這裡是學什麼:學 JS 裡的「東西」分兩種:基本資料(像數字、字串)和物件(像陣列)特別注意在JS 沒有像python有字典的功能。還要知道它們怎麼被「複製」(基本資料是影印,物件是共用)。 這個概念有點複雜,我會另外寫文章解釋。
    • 白話解釋:基本資料型別(像 number、string、null)是獨立的便條紙,寫了就不能改;物件(像 {} 或 [])是共享的筆記本,改了大家都能看到。call by value 像影印便條紙,call by reference 像給筆記本的連結。
  3. typeof(null) is object 等 JS 的 bug
    • 這裡是學什麼:認識 JS 的「怪脾氣」。比如 typeof null 說它是 object,這是 JS 早年的錯誤,留到現在。還有其他容易搞亂的坑。
    • 白話解釋:JS 就是個怪語言,有時候沒邏輯,有時會出莫名其妙的問題(像 null 被當成物件)。學會這些坑,就能繞過去!
  4. Coercion(為何 string 是 primitive 卻有 .toUpperCase() 方法)
    • 這裡是學什麼:學 JS 怎麼「自動幫你轉東西」,還有為什麼簡單的字串(string)也能用 .toUpperCase() 這種招數。
    • 白話解釋:Coercion 是 JS 擅自把東西換成另一種格式(像把數字變字串),有時幫你,有時害你。
      • Coercion 是 JS 自動把東西換成另一種形式,像是把文字 "5" 當數字用("5" - 1 變 4)。這有點像自動翻譯,但有時翻錯!還有,文字(string)是簡單東西,但 JS 會偷偷把它包裝成「臨時文件夾」,所以你能用 .toUpperCase() 這種高級指令把 "hello" 變 "HELLO"。
  5. let, const, var 比較與不要用 var 的原因
    • 這裡是學什麼:學怎麼「命名和儲存東西」。「let」和「const」是新方法,var 是老方法,容易亂,別用!
    • 白話解釋:想像你把東西放進盒子,let 是可以換內容的盒子,const 是鎖死的盒子,var 是破洞的盒子,東西會漏出去。用 let 和 const 比較安全!
  6. global scope, local scope, block scope
    • 這裡是學什麼:學東西在程式裡的「活動範圍」,像是家裡還是房間。
    • 白話解釋:Scope 是東西能被看到的範圍。全域(global scope)像放在客廳的東西,全家都能用;區域(local scope)像放房間的東西,只有房間裡能用;區塊(block scope)像抽屜裡的東西,只有特定小地方能用。學這個就像知道東西放哪才安全!
  7. hoisting
    • 這裡是學什麼:學 JS 怎麼「偷跑」。它會把你的 var 或函式提到程式前面,但有時會讓你抓狂。 白話解釋:hoisting 像 JS 在開工前把你的工具(var )先擺好,但沒放東西進去,所以你可能用到空的工具,程式就出錯。


模組 2:函式與作用域

這裡是學怎麼寫「小幫手」(函式),還有它們怎麼跟盒子(作用域)互動!

  1. function declaration & function expression
    • 這裡是學什麼:學兩種寫「小幫手」的方法:一個是大聲宣告(declaration),一個是安靜定義(expression)。
    • 白話解釋:function declaration 是直接喊「這是我的幫手!」(像 function sayHi() {});function expression 是把幫手塞進盒子(像 const sayHi = function() {})。兩者用法稍有不同,取決於程式設計者的習慣。
  2. anonymous function
    • 這裡是學什麼:學怎麼寫「沒名字的幫手」,通常用在臨時任務。
    • 白話解釋:anonymous function 像臨時工,沒取名字(像 function() {}),直接丟去用,比如按鈕點擊時跑一下。
  3. callback function
    • 這裡是學什麼:學怎麼讓一個幫手「等指令」再做事。
    • 白話解釋:callback function 是你告訴另一個幫手「等我喊你,你再動!」(像按鈕點擊後才跑的函式)。
  4. 全域 & 函式執行環境(creation phase, execution phase)
    • 這裡是學什麼:學 JS 怎麼「準備和執行」程式,分成兩步:先準備工具和區域(creation phase),再做事(execution phase)。
    • 白話解釋:JS 像個廚師,先把食材和刀具準備好(creation phase),然後開始炒菜(execution phase)。每個函式都有自己的小廚房。
  5. scope chain
    • 這裡是學什麼:學 JS 怎麼「找東西」,從小房間到大廳一層層找。
    • 白話解釋:scope chain 像你找鑰匙,先看桌上(當前房間),沒找到就去客廳(外層),最後去大門口(全域)。
  6. closure 閉包(var 跑 console.log 那一個)
    • 這裡是學什麼:學幫手怎麼「記住」外面的東西,即使外面的房間關了。
    • 白話解釋:closure 像幫手帶著小抄,記住外面的區域裡有什麼。經典例子是用 var 在迴圈裡跑 console.log,結果全印錯,因為 var 不會鎖住值。
  7. IIFE(Immediately Invoked Function Expression)
    • 這裡是學什麼:學怎麼寫一個「馬上做事就消失的幫手」。
    • 白話解釋:IIFE 像一個臨時幫手,進來做事(像 (function() { ... })()),做完就走,不留痕跡,常用來避免亂放東西到大廳。


模組 3:操作網頁:DOM 與事件

這裡是學怎麼讓網頁聽你的話,點擊、改變文字什麼的!

  1. Document Object Model (DOM)
    • 這裡是學什麼:學網頁的「地圖」,讓你找到並改網頁上的東西。
    • 白話解釋:DOM 是網頁的藍圖,把每個按鈕、文字都變成你可以操控的東西,像玩樂高一樣。
  2. getElementById, getElementsByClassName(HTML Collection), querySelector, querySelectorAll(NodeList)
    • 這裡是學什麼:學怎麼「抓網頁上的東西」,像用身分證(getElementById)或標籤(querySelector)找人。
    • 白話解釋:getElementById 是用獨一無二的名字抓東西;getElementsByClassName 是抓一群有同樣標籤的東西(給你 HTML Collection);querySelector 像萬能搜尋,什麼都能找,還給你 NodeList。
  3. addEventListener
    • 這裡是學什麼:學怎麼讓網頁「聽指令」,像點擊按鈕就做事。
    • 白話解釋:addEventListener 像給按鈕裝個耳朵,告訴它「有人點你才跑!」。
  4. event bubbling, event delegation, stopPropagation
    • 這裡是學什麼:學網頁的「點擊傳遞規則」,怎麼讓點擊更聰明或停下來。
    • 白話解釋:event bubbling 像點擊按鈕後,訊息會一層層往上傳(從按鈕到整個網頁);event delegation 是只給大盒子裝耳朵,小按鈕共用,省力;stopPropagation 是說「別傳了,停!」。


模組 4:非同步程式設計

這裡是學怎麼讓 JS 等一下再做事,比如等資料來了再顯示!

  1. JS event loop 流程, call stack
    • 這裡是學什麼:學 JS 怎麼「排隊做事」,一次只做一件事。
    • 白話解釋:event loop 像個秘書,把任務排好隊;call stack 是秘書的桌子,只能放一個任務,做完再換下一個。忙不過來就丟到隊伍裡等。
  2. callback, setTimeout
    • 這裡是學什麼:學怎麼讓 JS 「過一會兒再做事」。 白話解釋:callback 是說「做完這個再做那個」;setTimeout 像定時器,說「等幾秒再跑這個幫手」。
  3. sync & async, Promise/then/catch, async/await/try/catch
    • 這裡是學什麼:學怎麼處理「要等的任務」(像抓資料)。
    • 白話解釋:sync 是按順序做事,async 是可以先做別的,等資料來了再處理。Promise 像張便條,說「資料來了就做這個,沒來就報錯」(用 then/catch 處理);async/await 是更簡單的寫法,像說「等資料來再繼續」(用 try/catch 抓錯)。


模組 5:現代 JS 與 React

這裡是學怎麼用新招數寫 JS,還能用 React 做酷炫網頁!哀 但React 蠻難的

  1. JS array prototype method(map, forEach, reduce, push, pop, shift, unshift 等)
    • 這裡是學什麼:學怎麼快速處理「清單」(像陣列)。
    • 白話解釋:陣列像一籃水果,map 是把每個水果包裝一下,forEach 是逐個檢查,reduce 是把水果榨成汁,push/pop 是加減水果,shift/unshift 是從頭加減。
  2. 解構物件(destructuring)
    • 這裡是學什麼:學怎麼快速拆開「包裹」(物件或陣列),拿裡面的東西。
    • 白話解釋:destructuring 像把一個大禮盒(物件)拆開,直接拿裡面的東西(像 let {name} = person),寫程式更乾淨。
  3. prototype chain(原始寫法 & 語法糖 class)
    • 這裡是學什麼:學 JS 怎麼「繼承東西」,讓物件有新功能。
    • 白話解釋:prototype chain 的核心是一層一層問上去。JavaScript 裡的物件會透過「原型鏈」來找屬性和方法,譬如你想知道這個物件有沒有某個方法?JS 會說:「等我找一下... 我自己沒有,但我爸(prototype)可能有,我問問看。」
    • 之後也會介紹最原始的寫法跟套裝版語法糖寫法。
  4. React functional component, React hooks(useState)
    • 這裡是學什麼:學怎麼用 React 做「會動的網頁小零件」。
    • 白話解釋:functional component 是網頁的一小塊(像按鈕或表單);useState 是讓這塊記住東西(像點擊次數),讓網頁活起來。
  5. 瀏覽器 JS 引擎(just-in-time compilation)
    • 這裡是學什麼:學 JS 怎麼在瀏覽器裡「跑得快」。
    • 白話解釋:JS 引擎 像瀏覽器的馬達,把你的程式轉成電腦懂的語言。just-in-time compilation 是馬達的渦輪增壓,讓程式跑得更快。


白話解釋的設計原則

其實我一直不想面對JS 哈哈,不過還是跟大家分享我寫的理念,我會盡量用生活化比喻讓我自己理解,之後的每個主題也會搭配程式碼,如果心有餘力再畫畫。

看到這裡的你已經很棒了,我們下個主題見!


留言
avatar-img
留言分享你的想法!
avatar-img
越南放大鏡 X 下班資工系
13會員
60內容數
雙重身份:越南放大鏡 X 下班資工系 政大東南亞語言學系是我接觸越南語的起點,畢業後找越南外派工作的生活跟資訊時,發現幾乎都是清單式的分享,很難身歷其境。所以我希望「越南放大鏡」可以帶讀者看到更多細節和深入的觀察。 - 下班資工系則是自學資工系的課程內容,記錄實際操作的過程,學習理論的過程。希望可以跟讀者一起成長。
2025/04/21
本文介紹行動通訊網路的演進歷史,從1G到5G,並說明ITU與3GPP在制定通訊規格上的重要角色,以及5G的三大關鍵應用場景:URLLC、eMBB和mMTC。
Thumbnail
2025/04/21
本文介紹行動通訊網路的演進歷史,從1G到5G,並說明ITU與3GPP在制定通訊規格上的重要角色,以及5G的三大關鍵應用場景:URLLC、eMBB和mMTC。
Thumbnail
2025/04/11
這篇文章說明網路的七層模型、IP 位址、通訊埠、TCP/UDP 協定、HTTP 協定、HTTP 狀態碼以及 WebSocket,並解釋它們之間的關係與互動方式。文中包含許多圖表和範例,幫助讀者理解這些網路概念。
Thumbnail
2025/04/11
這篇文章說明網路的七層模型、IP 位址、通訊埠、TCP/UDP 協定、HTTP 協定、HTTP 狀態碼以及 WebSocket,並解釋它們之間的關係與互動方式。文中包含許多圖表和範例,幫助讀者理解這些網路概念。
Thumbnail
2025/03/23
學習CSS的技巧與工具,包含偽類、遊標樣式、絕對單位和相對單位、元素顯示與隱藏、Flexbox、響應式設計(RWD)、Bootstrap和Tailwind等,幫助你設計出漂亮且在不同螢幕上都好用且順眼的網頁。
Thumbnail
2025/03/23
學習CSS的技巧與工具,包含偽類、遊標樣式、絕對單位和相對單位、元素顯示與隱藏、Flexbox、響應式設計(RWD)、Bootstrap和Tailwind等,幫助你設計出漂亮且在不同螢幕上都好用且順眼的網頁。
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
在這個章節中,我們介紹了HTML的基本概念,包括其作為結構化標記語言的特性、應用領域,以及主要使用者。這些知識為後續的深入學習和實踐奠定了基礎,幫助讀者了解HTML在現代網頁開發中的重要性。
Thumbnail
在這個章節中,我們介紹了HTML的基本概念,包括其作為結構化標記語言的特性、應用領域,以及主要使用者。這些知識為後續的深入學習和實踐奠定了基礎,幫助讀者了解HTML在現代網頁開發中的重要性。
Thumbnail
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
Thumbnail
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
Thumbnail
此章節旨在介紹Java的基本語法、註解和變數的使用。透過學習,讀者將了解Java程式的基本結構、程式進入點的定義、如何撰寫單行和多行註解,以及如何宣告和初始化變數。
Thumbnail
此章節旨在介紹Java的基本語法、註解和變數的使用。透過學習,讀者將了解Java程式的基本結構、程式進入點的定義、如何撰寫單行和多行註解,以及如何宣告和初始化變數。
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
本章節旨在介紹TypeScript的基本語法,包括一般結構、程式進入點、註解以及變數的定義和賦值。這些知識將幫助讀者瞭解TypeScript的基本架構,並且可以開始使用TypeScript進行開發。
Thumbnail
本章節旨在介紹TypeScript的基本語法,包括一般結構、程式進入點、註解以及變數的定義和賦值。這些知識將幫助讀者瞭解TypeScript的基本架構,並且可以開始使用TypeScript進行開發。
Thumbnail
TypeScript是一種由Microsoft開發和維護的開源編程語言。它是JavaScript的超集,主要擴展了JavaScript的語法,增加了靜態類型檢查和其他特性,使得開發大型應用程序更為方便和可靠。
Thumbnail
TypeScript是一種由Microsoft開發和維護的開源編程語言。它是JavaScript的超集,主要擴展了JavaScript的語法,增加了靜態類型檢查和其他特性,使得開發大型應用程序更為方便和可靠。
Thumbnail
本章目的是為讀者提供有關如何設置JavaScript開發環境的知識,包括在瀏覽器、Node.js和各種編輯器和IDE中編寫和運行JavaScript的信息。此外,本章還介紹了如何架設本地開發伺服器以模擬實際的網頁環境。這些知識對於希望開發前端應用或後端服務的JavaScript開發者來說都是必要的。
Thumbnail
本章目的是為讀者提供有關如何設置JavaScript開發環境的知識,包括在瀏覽器、Node.js和各種編輯器和IDE中編寫和運行JavaScript的信息。此外,本章還介紹了如何架設本地開發伺服器以模擬實際的網頁環境。這些知識對於希望開發前端應用或後端服務的JavaScript開發者來說都是必要的。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News