js中的類型和函數參數傳遞類型問題


js中的類型:

2大類型:原始類型和對象。

原始類型有 boolean、number、string這三個普通原始類型,還有null、undefined這倆特殊原始類型

對象嘛就多了,普通對象、內置對象、全局對象、函數、數組等。

函數參數傳遞類型: 

 對於原始類型,傳遞的是值,即復制一份傳入函數,在函數內部修改不影響外部變量本身。

對於對象類型,傳遞的是地址,在函數內部修改對象時會導致外部變量發生變化。

注意這種情況!參考如下代碼:

var oMyObj = {name:"羅伯特"};

function Test( obj ){
   obj.name = "啊!!!";
   obj = {name: "啊~~~"};
}

Test(oMyObj);

alert(oMyObj.name);

表面上看在內部重新定義了變量,應該結果是“啊~~~”才對,可結果是“啊!!!”。

原因是按地址傳遞,在Test執行時是重新聲明了一個obj局部變量,它指向了外部的oMyObj對象。所以函數第一行起作用。但出現obj = {name:"~~~"}時,是改變了obj的指向為新的對象,並沒有影響到外部oMyObj的指向。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM