在函數內部的代碼中,當某些值不能確定的時候,可以通過函數的參數從外部接收進來一個函數可以通過傳人不同的參數來完成不同的操作。
函數的參數分為形參和實參。在聲明函數時,可以在函數名稱后面的小括號中添加一些參數,這些參數被稱為形參。當函數調用的時候,同樣也需要傳遞相應的參數,這些參數稱為實參。函數的形參是形式上的參數,因為當麗數聲明的時候,這個函數還沒有被調用,這些參數具體會傳過來什么樣的值是不確定的。而實參是實際上的參數,在函數被調用的時候它的值就被確定下來了。
函數形參和實參的具體語法形式如下。
function 函數名(形參1,形參2,...) //函數聲明的小括號里的是形參
//函數體代碼
}
函數名(實參1,實參2,...); //函數調用的小括號里的是實參
一個函數的參數可以有多個,使用逗號分隔即可,也可以沒有參數。下面我們通過代碼演示函數參數的具體使用。
function cook(arg) {
console.log(arg);
}
cook('potato');
在上述代碼中,arg是函數的形參,它類似于一個變量,當函數調用的時候,它的值就是調用時傳入的值,即 potato。
接下來我們再演示如何利用函數求任意兩個數之和,具體代碼如下。
function getSum(numl,num2) {
console.log(numl + num2);
}
getSum(1,3);
//輸出結果:4
getSum(3,8);
//輸出結果:11
在上述代碼中,第4行代碼在調用函數時傳入了兩個實參,分別是1和3,這兩個實參對應了函數中的形參num1和num2,然后在第2行對這兩個值進行了相加,因此得到的輸出結果為4。同理,第5行代碼在調用函數時傳入了3和8兩個實參,因此結果為11。
多學一招:
函數的形參可以看做是一個變量,當我們把一個值類型變量作為參數傳給函數的形參時,其實是把變量在??臻g里的值復制了一份給形參,那么在方法內部對形參做任何修改,都不會影響到的外部變量。
function fn(a) {
a++;
console.log(a);
}
var x = 10;
fn(x);
console.log(x);
當我們把引用類型變量傳給形參時,其實是把變量在棧空間里保存的堆地址復制給了形參,形參和實參其實保存的是同一個堆地址,所以操作的是同一個對象。
function Person(name) {
this.name = name;
}
function f1(x) { // x = p
console.log(x.name); // 2. 這個輸出什么 ?
x.name = "張學友";
console.log(x.name); // 3. 這個輸出什么 ?
}
var p = new Person("劉德華");
console.log(p.name); // 1. 這個輸出什么 ?
f1(p);
console.log(p.name); // 4. 這個輸出什么 ?