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的指向。