2026年4月25日 星期六

您知道嗎?JavaScript 函式的參數其實是區域變數:JS函式參數之初步入門


在 JavaScript 中,函式的參數本質上就是該函式的區域變數(Local Variable)。這代表當參數與外部變數同名時,會產生**遮蔽(Shadowing)**現象,優先使用內部的參數值。

範例說明:本範例僅使用單一參數示例(使用多個 js 參數,不在本次範例探討)。
<script type="text/javascript">
// 1. 定義全域變數:
let globalVar = "我是全域";
let shadowVar = "我是原始值";

// 2. 定義一個帶有同名參數的函式:
function testFunction(shadowVar) {
  // 此時的 shadowVar 是區域變數,會遮蔽外層的 shadowVar
  console.log(shadowVar);

  // 函式內沒有 globalVar,會往外層查找(Scope Chain)
  console.log(globalVar);
}

// 執行結果:
console.log(shadowVar); // 輸出:"我是原始值"
testFunction("我是參數"); // 輸出:"我是參數"、"我是全域"
testFunction(); // 輸出:undefined、"我是全域"
</script>


結論:
  • 參數即區域變數:參數的生命週期僅存在於函式執行期間。
  • 遮蔽(shadowing):當區域變數(參數)與外部變數同名時,函式內部會優先存取區域變數。
  • 未傳值的狀態:若呼叫函式時未傳入參數,該參數的值預設為 undefined(或可考慮使用 ES6 預設參數來避免此狀況,例如:function testFunction(shadowVar = "預設值"){...})。
  • 作用域鏈(Scope Chain):若函式內部找不到該變數,JavaScript 引擎才會向外層作用域查找。




沒有留言:

張貼留言

請注意 : 您的留言發佈成功 , 需經審核後 , 才能決定是否回覆 . 謝謝 !!