Day07. JavaScript的傳遞只是開分身帳號而已

Day07. JavaScript的傳遞只是開分身帳號而已

本日閱讀進度:第三章 介紹函式(79~94頁)

重點摘要:

1.使用函式簡化程式碼

先來看看下面這段程式碼:

var dogName = "rover";
var dogWeight = 23;
if (dogWeight > 20) {
  console.log(DogName + "says WOOF WOOF");
} else {
  console.log(DogName + "says woof woof");
}

var dogName = "spot";
var dogWeight = 13;
if (dogWeight > 20) {
  console.log(DogName + "says WOOF WOOF");
} else {
  console.log(DogName + "says woof woof");
}

是不是覺得重複又冗長呢?

我們可以把它改寫成函式:

function bark(name, weight) {
  if (weight > 20) {
    console.log(name + " " + "says WOOF WOOF");
  } else {
    console.log(name + " " + "says woof woof");
  }
}

再用引數呼叫它:

bark("rover", 23); //"rover says WOOF WOOF"
bark("spot", 13); //"spot says woof woof"

2.參數和引數

程式新手常常將參數(parameter)和引數(argument)搞混, 或直接都稱為參數。

事實上,在函式主體上的稱為參數,要呼叫函式時傳入的值稱為引數。

function bark(name, weight)
//name 和 weight 是參數;

bark("rover", 23)
//"rover" 和 23 是引數。

引數可以是字串、布林值或數字,也可以是變數,甚至可以把運算式當成引數傳入。

saveMyProfile(student, year, 381/100, status == “newuser”);

3.JavaScript的引數是按值傳遞

最近上課時老師才提到pass by reference vs pass by value,沒想到在這裡又碰到它啦!

JavaScript是透過按值傳遞(pass by value)的方式將引數傳給函式。

也就是說,傳遞的是副本,原始的變數不會改變。

例如:

var age = 7;  //宣告一個變數,並將初始值設定為7.

function addOne(x){
  x = x + 1;
}         //宣告一個addOne函式,此函式具有一個名為x的參數,它會將x的值加1。

addOne(age); //呼叫addOne函式,將變數age做為引數傳入。age中的值會被複製給參數x。

console.log(age);  //再回去看age,數值依然是7。

近期五倍紅寶石的官網會發表一篇pass by reference vs pass by value的文章,敬請密切注意!

本文同步發表於iT邦幫忙

Recent post