~/VibeHandbook
免費 PDF

程式語言

developer.mozilla.org

JavaScript

是什麼

JavaScript 是 web 的語言。它是唯一能在每個瀏覽器中原生執行的語言。通過 Node、Deno 和 Bun,它也能在伺服器上執行,所以僅用它就能構建一個完整的應用。它不會事先檢查資料,只在程式執行時才檢查——就像寫菜譜時沒有食材清單,少了哪樣東西要等做到一半才發現(這叫"動態型別")。它還是事件驅動的,而且無處不在,因而成為全世界使用最廣泛的程式語言。

優勢

  • 處處可執行:瀏覽器、伺服器、邊緣函式,甚至嵌入式裝置。
  • 無需編譯步驟;編輯後重新整理即可獲得即時反饋。
  • 龐大的 npm(Node 包管理器)生態和巨大的社群。
  • 一流的非同步支援,配合 promise 和 async/await

取捨

  • 沒有靜態型別——許多錯誤只有在執行時才暴露。
  • 歷史遺留的小毛病:寬鬆相等(==)、this 繫結、隱式型別轉換。
  • 缺乏紀律時很容易造成回撥或依賴的失控蔓延。
  • 前後端同語言可能模糊架構邊界。

何時使用

對於快速指令碼、小專案、學習、原型,或不值得新增構建步驟的環境,可以選擇純 JavaScript。對於更大或更長期維護的專案,大多數團隊會轉向 TypeScript——但 JS 仍是讓東西在瀏覽器或小型 Node 工具中跑起來的最快方式。

與 vibe coding 的契合度

AI 助手能流暢地處理 JavaScript,但由於缺乏型別,生成的程式碼可能會悄無聲息地假設了錯誤的資料結構。引導 AI 使用現代語法(const/let、箭頭函式、async/await、模組)和嚴格相等,並在資料結構重要的地方讓它加上防禦性檢查或 JSDoc 註釋。說明你的執行環境——瀏覽器還是 Node、ESM 還是 CommonJS——以確保 import 正確。由於沒有編譯器可以依靠,讓它給出一個小的可執行示例或測試,以便你直接驗證行為。

const fetchTitle = async (url) => {
  const res = await fetch(url);
  if (!res.ok) throw new Error(`HTTP ${res.status}`);
  const html = await res.text();
  return html.match(/<title>(.*?)<\/title>/i)?.[1] ?? "(no title)";
};

fetchTitle("https://example.com").then(console.log);