Biaofun js 變數賦值按位址傳遞

2021-10-12 04:29:27 字數 607 閱讀 5400

var a = ;

var b = a; //將a賦值給b

b.age = 2; //改變b的age屬性值

console.log(a.age); //輸出a的age屬性值

大家覺得最後輸出 a.age 的值為多少呢?

請先將上面的**複製到瀏覽器的控制台執行一次看到結果。

為什麼最後的結果是2,而不是1呢?我們並沒有改變a.age的值。

這是因為js的物件賦值是引用賦值,傳遞的是位址,所以a和b指向的是同乙個位址。共用同乙個位址塊,所以我們改變b的值實際上a的值也會更這變化。

如果我想拷貝出乙份進行b值的改變,就會引起被拷貝a值的同時改變,非常難受。

怎麼才能真正的做到拷貝變數不影響原來的變數呢?

可以使用如下方法:

var a = ;

var b = json.parse(json.stringify(a)); //將a的值拷貝乙份給b

b.age = 2; //改變b的age屬性值

console.log(a.age); //輸出a的age屬性值

最後輸出 1

就是使用json.stringify物件先轉成字串,再使用json.parse將字串轉成物件

(C )正確地給string型別變數賦值

方法1 呼叫stl方法 建構函式 或 assign 賦值 方法 方法2 待商榷 指標操作 使用scanf s s 0 或 memcpy函式 include include include includeint main 執行結果 stl str content i m a string.size 1...

PHP變數引用賦值與變數賦值變數的區別

變數預設總是傳值賦值。那也就是說,當將乙個表示式的值賦予乙個變數時,整個原始表示式的值被賦值到目標變數。這意味著,例如,當乙個變數的值賦予另外乙個變數時,改變其中乙個變數的值,將不會影響到另外乙個變數。有關這種型別的賦值操作,請參閱表示式一章。foo abc b foo b my name is b...

PHP變數賦值

php變數賦值的方式有兩種 值賦值和引用賦值。預設情況下,php中都使用值傳遞方式,即若在函式的內部改變了引數的值,也不會影響到函式外部的值。例 function change string str 改變之前 change str echo str 輸出結果為 改變之前。儘管在函式內部改變了引數 s...