再次學習javascript中的參數傳遞

來源:互聯網
上載者:User

javascript中的所有函數的參數傳遞都是按照值傳遞的,做了下面測試:

function addTen(num){num +=10;return num;}var count = 20;var result = addTen(count);alert(cont);//20alert(result);//30
好吧,上面只是做了基本類型的傳遞,再做個參考型別的傳遞看看:

function setName(obj){obj.name="Mark";}var person = new Object();setName(person);alert(person.name);//Mark
這樣看起來是引用傳遞,不是值傳遞,那麼再做個測試:

function setName(obj){obj.name="Mark";obj = new Object();obj.name = "David";}var person = new Object();setName(person);alert(person.name);//Mark
這個例子與前面一個例子的唯一的區別就是在setName()的函數後面增加 了兩行代碼:一行代碼為obj重新定義了個對象,另一行代碼為該對象定義了一個帶有不同值的name屬性。在把persion傳遞給setName()函數後,其name屬性被設定為Mark,然後將一個新對象賦值給obj,同時其name屬性設定為David。如果person是按照引用傳遞的,那麼person就會自動被修改為指向其name屬性值為David的新對象。但是,當接下再訪問person.name時,顯示的值仍是Mark。這說明即使在函數內部修改了參數的值,但原始的引用仍然保持未變。實際上,當在函數內部重寫obj時,這個變數引用的就是一個局部對象了。而這個局部對象會在函數執行完後被銷毀。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.