理解ECMAScript中全部的參數傳遞的都是值,不可能經過引用傳遞參數

解釋爲何全部的參數傳遞的都是值,不可能經過引用傳遞參數

「值」的含義

這裏的值,指的是,複製傳進來的對象的地址,把這個複製值賦給參數函數

引用傳遞的含義

直接將變量自己的地址傳進去,直接把傳進來的對象的地址傳給參數code

參數傳遞的過程

  1. 把傳進來的對象的地址複製一份
  2. 把這個複製出來的值傳給參數
  3. 參數和傳進來的對象訪問的是一個地址,對參數進行操做會表如今對象上

結合代碼進行理解

function setName(obj) {
    obj.name = 'XX'; // 對obj進行操做會表如今person上
    obj = new Object(); // 這裏obj的引用改變了,若是傳遞的是引用,那麼person的地址也會改變,也就是說,接下來對obj的操做,也會表如今person上
    obj.name = 'YY';
}
let person = new Object();
setName(person);
console.log(person.name); // XX,說明不是引用傳遞

總結

若是是引用傳遞,那麼在函數內部改變對象的引用時,傳進來的參數的地址也會改變,接下來對函數內部對象的操做,也會表如今傳進來的參數上,然而上面驗證並不是如此,因此「ECMAScript中全部的參數傳遞的都是值」對象

相關文章
相關標籤/搜索