跳到正文
馬克工具箱

線上執行 JavaScript

貼上或編寫 JavaScript,點執行即可看到 console.log、warn、error 的輸出,適合驗證程式碼片段、練習演算法或除錯一段邏輯。支援頂層 await,程式碼在獨立的 Worker 裡執行,寫出死迴圈也不會卡住頁面。

在瀏覽器本地執行,輸入的內容和檔案都不會上傳

Ctrl+Enter / ⌘+Enter

控制台

console.log 的輸出會顯示在這裡。

程式碼在獨立的 Worker 中執行:沒有 DOM(document、window),但可以用 fetch、定時器、JSON、Intl 等內建功能。

使用步驟

  1. 在左側編寫程式碼,或修改示例。
  2. 點「執行」或按 Ctrl+Enter(Mac 上是 ⌘+Enter),右側顯示控制台輸出。
  3. 程式碼執行太久時點「停止」,或在右下角設定自動停止的時限。

引數說明

執行環境
瀏覽器的 Web Worker,支援最新的 JavaScript 語法(ES2024 及以後,取決於你的瀏覽器)、fetch、setTimeout、Intl、crypto 等,但沒有 document 和 window。
控制台
支援 console.log、info、warn、error、debug、table、count、time/timeEnd,以及 %s、%d、%o 等佔位符。物件會像 Node.js 一樣展開顯示。
頂層 await
程式碼整體放在一個 async 函式中執行,可以直接寫 await。

輸出的內容

輸出裡只會出現你傳送到控制台的內容。最後一行的值不會像瀏覽器控制台那樣顯示,所以要用 console.log 包起來。輸出遵循 Node.js 風格:陣列和物件會展開,其中的字串帶引號,佔位符 %s 和 %d 由後面的引數填充。

console.log([1, 2, 3].map((n) => n * n));
console.log('%s is %d years old', 'Ada', 36);
console.log({ name: 'Ada', tags: ['a', 'b'] });
const data = await fetch('https://example.com/').then((r) => r.status);
console.log(data);

前三行分別輸出 [ 1, 4, 9 ]、Ada is 36 years old 和 { name: "Ada", tags: [ "a", "b" ] }。後兩行需要聯網,輸出的是這次請求的 HTTP 狀態。時限可以設為 5、10、30 或 60 秒,達到時限時執行會被終止,並給出提示。

常見問題

能用 import 引入 npm 包嗎?

不能用 import 語句。可以用 await import('https://esm.sh/包名') 動態載入 ESM 格式的包,這需要聯網。

寫了死迴圈怎麼辦?

點「停止」立即結束,或等待達到時限後自動停止。每次執行都用新的 Worker,不會影響頁面。

程式碼會上傳嗎?

不會。程式碼只在你的瀏覽器裡執行;只有程式碼中自己發起的網路請求會訪問對應的網址。

支援 TypeScript 嗎?

目前只支援 JavaScript。TypeScript 的型別標註需要先去掉。

隱私說明

本工具完全在瀏覽器中執行,檔案和文字都在你的裝置上處理,不會上傳到我們的伺服器。

相關工具