-
函數(shù)的參數(shù):
- 形式參數(shù)(形參):在函數(shù)聲明的時(shí)候融柬,寫(xiě)在()中的變量死嗦,形參在函數(shù)內(nèi)部作為局部變量使用,形參用來(lái)占位
- 實(shí)際參數(shù)(實(shí)參):在函數(shù)調(diào)用的時(shí)候,寫(xiě)在()中的變量(對(duì)象)
-
函數(shù)的調(diào)用:
- 內(nèi)部會(huì)把實(shí)參賦值給形參
- 實(shí)參可能是值類(lèi)型的也可能是引用類(lèi)型的
-
值類(lèi)型的數(shù)據(jù)作為函數(shù)的參數(shù):
- 在函數(shù)內(nèi)部修改了形參的值(a)粒氧,對(duì)函數(shù)外部的實(shí)參不會(huì)產(chǎn)生影響越除,他們是相互獨(dú)立的。
-
引用類(lèi)型的數(shù)據(jù)作為函數(shù)的參數(shù):
- 在函數(shù)內(nèi)部修改了形參的值(paramObj),對(duì)函數(shù)外部的實(shí)參會(huì)產(chǎn)生影響摘盆,因?yàn)樗麄児蚕韮?nèi)存中的同一塊數(shù)據(jù)
示例代碼:
<script>
var num = 10;
function func(a) {
console.log(a); //10
a = 20;
console.log(a); //20
}
func(num);
console.log(num); //10
var obj = {
name:"張三"
}
function foo(paramObj) {
//obj 和 paramObj 共享同一塊內(nèi)存中的數(shù)據(jù)
console.log(paramObj.name); //張三
paramObj.name = "李老漢";
console.log(paramObj.name); //李老漢
//paramObj 通過(guò)字面量重新開(kāi)辟了一塊內(nèi)存空間翼雀,切斷了與obj的聯(lián)系,不再共享同一塊內(nèi)存空間的數(shù)據(jù)
paramObj = {
name:"老王"
}
console.log(paramObj.name); //老王
}
foo(obj);
console.log(obj.name); //李老漢