JavaScript中的引數傳遞方式
阿新 • • 發佈:2019-01-30
對於JavaScript中的基本型別來說,對於以下程式碼可以看出是屬於按值傳遞
function add(a,b){
return a+b;
}
var a=1,b=2;
document.write(add(a,b));
那麼再讓我們來看下面這段程式碼
function fun(obj){ obj.name="gg"; } var pro=new Object(); pro.name="Pigpigever"; fun(pro); document.write(pro.name);//這裡pro.name的值為"gg"
此時說明一個問題。形式引數obj能夠對物件pro的屬性進行改動,那麼它到底屬不屬於引用傳遞呢??
接下來看下面這段程式碼:
可以看得出來,當我們重新為obj物件申請一段記憶體空間的時候,pro並沒有因為obj的重新指向而改變指向的記憶體地址,所以這裡向函式傳遞的是物件的地址的值,是值傳遞,而不是引用傳遞。function fun(obj){ obj.name="gg"; obj=new Object(); obj.name="sss"; } var pro=new Object(); pro.name="Pigpigever"; fun(pro); document.write(pro.name);//這裡pro.name的值還是為"gg"
歡迎指正~~~