假設我有一個JS
function addMessage(type, txt, refs=[], name="")
我可以用 addMessage(type=type, txt=txt, name=9)
這樣指定輸入參數嗎?
在 JavaScript 中,函數的參數 不支援 Python 風格的命名參數傳遞(即 addMessage(type=type, txt=txt, name=9) 這種方式是不行的)。
錯誤的方式(Python 風格,JS 不支援)
addMessage(type=type, txt=txt, name=9); // 會報錯
解決方案
方法 1:使用物件作為參數
在 JavaScript 中,通常會使用「物件參數」來模擬命名參數,這樣可以自由指定順序:
function addMessage({ type, txt, refs = [], name = "" }) { console.log(type, txt, refs, name); } // 可以只傳特定參數 addMessage({ type: "info", txt: "Hello", name: 9 });
優點:
參數可以不按順序傳遞。
可選參數不需要全部傳遞(像 refs 可以省略)。
默認值仍然有效。
方法 2:使用普通傳參
如果你一定要按順序傳參,就只能用普通的函數參數:
function addMessage(type, txt, refs = [], name = "") { console.log(type, txt, refs, name); } // ✅ 但必須按順序傳遞 addMessage("info", "Hello", [], 9);
缺點:
順序不能改變,如果只想改 name,就得填 refs=[] 這個參數。
建議
最佳方式是「使用物件作為參數」,這樣能讓你的函數更靈活:
addMessage({ txt: "Hello", name: 9, type: "info" }); // ✅ 無需按順序
這樣寫起來就更像 Python 的命名參數傳遞,還能保持 JavaScript 風格!
留言板
歡迎留下建議與分享!希望一起交流!感恩!