JavaScript函數(shù)的參數(shù)傳遞

JavaScript函數(shù)的參數(shù)傳遞取決于參數(shù)的類型:

  • 若參數(shù)為基本類型,那么按值傳遞
  • 若參數(shù)為引用類型,那么按共享傳遞

“按共享傳遞”是“按值傳遞的特殊情況” -- 值是對象存儲地址的副本(address copy)?!鞍垂蚕韨鬟f”的特點可一句話概括為:改屬性不改對象。


1、按值傳遞(call by value)

//函數(shù)內(nèi)部參數(shù)的改變并沒有影響到外部變量
function foo(a) {
      a = a * 10;
}

var num = 10;
foo(num);
console.log(num);                // 10  沒有變化

2、按共享傳遞(call by sharing)

function bar(b) {
    b.item = "new_value";         // 參數(shù)b得到了obj1的地址,也叫"指向obj1"
    console.log(b === obj1) ;     // true
}

var obj1 = {item: "old_value"};
bar(obj1);

console.log(obj1.item);            // new_value
function baz(c) {                  // c是參數(shù),作用域是函數(shù)內(nèi)
    c = {item: "changed"};         // c綁定到了新的對象地址
    console.log(c === obj2);       // false 因為c已經(jīng)改變了,與原來的不同
}

var obj2 = {item: "unchanged"};
baz(obj2);

console.log(obj2.item);             // unchanged
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容