js的值傳遞和引用傳遞及其應用詳解

一篇文中告訴你中的值傳遞和引用傳遞 在這個例子中,obj1和obj2都指向了同一個堆內(nèi)存中的對象,因此修改objname也會影響到obj1。總結(jié)來說,中的變量傳遞本質(zhì)上...
一篇文中告訴你中的值傳遞和引用傳遞
在這個例子中,obj1和obj2都指向了同一個堆內(nèi)存中的對象,因此修改objname也會影響到obj1??偨Y(jié)來說,中的變量傳遞本質(zhì)上都是值傳遞。對于基本數(shù)據(jù)類型,傳遞的是值的副本;而對于引用數(shù)據(jù)類型,傳遞的是對象在堆內(nèi)存中的引用。
引入function func(a){ a++;}// 因為函數(shù)都沒有調(diào)用,所以找不到 aconsole.log(a);//結(jié)果明顯是undefined了。//所以看下面兩個例子。
值傳遞:將實參的值一份給形參,在函數(shù)內(nèi)部對形參的修改不會影響實參的值。也就是說,在值傳遞中,函數(shù)使用的是實參值的拷貝,它們在內(nèi)存中是不同的變量。
什么是值傳遞和引用傳遞
值傳遞和引用傳遞是編程中常用的兩種變量或參數(shù)傳遞方式,其區(qū)別如下: 值傳遞:將實參的值一份給形參,在函數(shù)內(nèi)部對形參的修改不會影響實參的值。也就是說,在值傳遞中,函數(shù)使用的是實參值的拷貝,它們在內(nèi)存中是不同的變量。
值傳遞是指將參數(shù)的值到函數(shù)的形參中,這樣在函數(shù)內(nèi)部對形參的修改不會影響到原始參數(shù)。這意味著,如果在函數(shù)內(nèi)部對形參進行更改,原始參數(shù)的值不會受到影響。這是因為函數(shù)內(nèi)部的操作只是對形參的副本進行的,而不是對原始參數(shù)本身進行的。
總的來說,值傳遞是將實際參數(shù)的值進行傳遞,而引用傳遞是將實際參數(shù)的傳遞。在函數(shù)參數(shù)的操作以及數(shù)據(jù)的傳遞過程中,引用傳遞具有許多方面的優(yōu)勢,例如可以減少內(nèi)存的開銷,提高程序的效率。在實際的編程中,需要根據(jù)具體情況選擇合適的傳參方式。
值傳遞:(形式參數(shù)類型是基本數(shù)據(jù)類型):方法調(diào)用時,實際參數(shù)把它的值傳遞給對應的形式參數(shù),形式參數(shù)只是用實際參數(shù)的值初始化自己的存儲單元內(nèi)容,是兩個不同的存儲單元,所以方法中形式參數(shù)值的改變不影響實際參數(shù)的值。引用傳遞:(形式參數(shù)類型是引用數(shù)據(jù)類型參數(shù)):也稱為傳。
值傳遞時,傳的是對象的值拷貝,即函數(shù)內(nèi)參數(shù)對象是調(diào)用時傳遞的對象的棧中對象的拷貝。引用傳遞時,傳的是棧中對象的,函數(shù)內(nèi)參數(shù)對象與調(diào)用時傳遞的對象是完全同一棧中對象。在Java中,基本類型和基本類型變量被當作參數(shù)傳遞給方法時,是值傳遞。無法給原變量重新賦值,也無法改變其值。
值傳遞和引用傳遞是兩種不同的參數(shù)傳遞方式,C++支持引用傳遞,而C、Java、Python則主要采用值傳遞。在C和C++中,當調(diào)用函數(shù)時,實際上是將實參的值(對于普通變量)或(對于指針和數(shù)組)到函數(shù)的參數(shù)中。這被稱為值傳遞,意味著函數(shù)內(nèi)部對參數(shù)的修改不會影響到原始變量。
本文鏈接:http:///bian/873802.html