JavaScript 地址變量是指存儲了內存地址的變量,在 JavaScript 中,對象和數組都是引用類型,這種類型被稱為對象型變量或地址型變量。這意味著當我們將一個對象作為參數傳遞給一個函數時,函數將修改該對象的值,并且這種改變是在原始對象上實現的。
舉個例子,我們通過以下代碼來演示 JavaScript 中的地址型變量:
let obj1 = {name: "Alice", age: 20}; let obj2 = obj1; obj2.name = "Bob"; console.log(obj1.name); // "Bob" console.log(obj2.name); // "Bob"
在這個例子中,我們首先定義了一個名為 obj1 的對象,并將其賦值為含有 name 和 age 屬性的對象字面量。接下來,我們將 obj1 賦值給 obj2 變量。這并沒有創建一個新的對象,而是將 obj2 對象中的內存地址指向 obj1。因此,當我們更新 obj2 的 name 屬性時,實際上是在 obj1 中更新了這個屬性,因為它們都使用相同的內存地址。
接下來還是給大家看幾個例子:
let arr1 = [1, 2, 3]; let arr2 = arr1; arr2.push(4); console.log(arr1); // [1, 2, 3, 4] console.log(arr2); // [1, 2, 3, 4]
在這個例子中,我們定義了一個名為 arr1 的數組,并將其初始化為 [1, 2, 3]。然后,我們將 arr1 賦值給 arr2 變量。接著,我們在 arr2 中添加一個值 4。最后,我們輸出 arr1 和 arr2 數組,輸出結果表明了它們都被更新了。
function updatePerson(person) { person.name = "Bob"; } let person1 = {name: "Alice"}; updatePerson(person1); console.log(person1.name); // "Bob"
在這個例子中,我們定義了一個名為 updatePerson 的函數,它接收一個 person 參數,并將它的 name 屬性值更改為 "Bob"。接下來,我們定義了一個名為 person1 的對象,并初始化其 name 屬性為 "Alice"。最后,我們傳遞 person1 對象作為參數調用 updatePerson 函數,因此 person1 的值將被更改為 "Bob"。
以上就是 JavaScript 中地址變量的一些例子,需要注意的是,在這些例子中,obj2、arr2、person 參數都指向了原始對象或數組。