function aa() {
var aaa = "123"; // 局部變量
}
aa();
alert(typeof aa.aaa); // "undefined"
| 需求 | 代碼模式 | 訪問方式 |
|---|---|---|
| 函數內部私有數據 | `function aa(){ var aaa=123; return aaa; }` | `aa()` 調用獲取返回值 |
| 函數對象掛載靜態屬性 | `function aa(){}; aa.aaa = "123";` | `aa.aaa` 直接訪問 |
| 構造函數實例屬性 | `function Aaa(){ this.aaa = "123"; }` | `new Aaa().aaa` 實例訪問 |
| 閉包保存狀態 | `var aa = (function(){ var aaa=123; return { get:()=>aaa, set:v=>aaa=v }; })();` | `aa.get()` / `aa.set()` |
// 方案 1:返回值
function aa() {
var aaa = "123";
return aaa;
}
alert(typeof aa()); // "string"
// 方案 2:掛載屬性 (靜態)
function aa() {}
aa.aaa = "123";
alert(typeof aa.aaa); // "string"
// 方案 3:構造函數
function Aaa() {
this.aaa = "123";
}
alert(typeof new Aaa().aaa); // "string"
**函數內部 `var` 變量 ≠ 函數對象屬性**。`typeof aa.aaa` 訪問的是函數對象的屬性,而非函數作用域內的變量。需根據用途選擇:返回值、靜態屬性、實例屬性或閉包。