javascript中的傳遞參數


同java一樣,javascript中參數也只有值傳遞。這點同變量的訪問不同,變量的訪問可以有按值和按引用兩種方式。以下分為基本數據類型和引用數據類型說明。

1.基本數據類型

 在向參數傳遞基本數據類型的值時,被傳遞的值會被復制給一個局部變量(命令參數,或者是argument對象中的一個元素)。

1 function addTen(num){
2       num += 10;
3       return num;
4     }
5     var count = 20;
6     var result = addTen(count);
7     alert(result); //30
8     alert(count)  //20,沒有變化

在調用函數時,變量count作為參數傳遞給函數,這個變量的值是20。數值20被復制給參數num以便在函數內部使用。在函數內部num被加了10,但是並不會影響到count變量。

count和num的相互獨立,僅僅是具有相同的值而已。如果是按照引用傳遞的話,變量count的值應該為30,所以。。。。

2.引用類型

在向參數傳遞引用類型的值時,會把這個值在內存中的地址復制給一個局部變量,因此這個局部變量的變化會反映在函數的內部。

function setName(obj){
       obj.name = "nick";
    }
    function setNameEx(obj){
       obj = new Object();
       obj.name = "grge";
    }
    
    var person = new Object();
    setName(person);
    alert(person.name); //nick
    setNameEx(person);
    alert(person.name);//nick

可以看出,在setName函數中,obj和person引用的是同一個對象,所以obj添加name值會反映在person。在setNameEx中,obj對象重新定義了一個對象,這樣他指向的對象就和person不一樣了,所以他添加name值並不會影響到person。如果是引用傳遞的話,person就會自動被修改為指向name屬性為“grge”的對象。

可以把javascript中函數的參數想象成局部變量。


免責聲明!

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



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