javascript傳遞參數


JavaScript傳遞參數


首先要知道的是

1.在js中基本數據類型是按值傳遞的,引用類型的值是保存在內存中的變量,js不容許直接操做對象的內存空間。函數

2.在複製變量值中咱們能夠看到兩者的不一樣。
當複製一個基本類型時,會建立一個當前對象的副本,它擁有爲它新分配的空間。兩者之間是獨立的,不相互影響。
當複製一個引用類型時,咱們也是建立看這個值的一個副本,不一樣的是這個值是一個指針,指向存儲在堆中的對象。這兩個值指向的是同一個對象,所以它們會相互影響。指針

因此傳遞參數的現象是

1.在向參數傳遞基本類型時,被傳遞的值複製給了一個局部變量(argument);在向參數傳遞引用類型的值時,會把這個值在內存中的地址複製給局部變量,所以這個局部變量的變化會反應在函數外部code

function Add(num){
   num+=10;
   return num;
}

var count=20;
var result=Add(count);
console.log(count);    //20,沒有變
console.log(result);   //30

2.js中全部函數參數的傳遞都是按值傳遞的。值的注意的是,並非說在局部做用域中被修改的對象會在全局中反應出來,就說明參數是按引用傳遞的對象

function setName(obj){
    obj.name='ywl';
    obj=new Object();
    obj.name='zhangsan';
}
var person=new Object();
setName(person);
console.log(person.name); //ywl

輸出的值是ywl,由於在函內部重寫obj,可是原始的引用並無變,變量的引用是一個局部對象,而這個局部對象在函數執行完畢以後會被當即銷燬。ip

相關文章
相關標籤/搜索