1. 程式人生 > >JavaScript中的引數傳遞方式

JavaScript中的引數傳遞方式

對於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的屬性進行改動,那麼它到底屬不屬於引用傳遞呢??

接下來看下面這段程式碼:

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"
可以看得出來,當我們重新為obj物件申請一段記憶體空間的時候,pro並沒有因為obj的重新指向而改變指向的記憶體地址,所以這裡向函式傳遞的是物件的地址的值,是值傳遞,而不是引用傳遞。


歡迎指正~~~