return(回傳)與console.log(印出)
function plus(a,b) {
return a + b
}
console.log(plus(1,1)) //2
/* 執行順序:
plus(1,1) -> 引數傳入plus這個function
return a + b -> 計算a+b
印出
*/
function plus2(c,d) {
console.log(c + d) //2
//這裡還有一行沒有寫的 return 預設 undefined
}
console.log(plus2(1,1)) //2 undefined
/* 執行順序:
plus(1,1) -> 引數傳入plus這個function
印出 c + d
印出 return
*/
自己的理解:console.log是一個印出的動作(顯示),不是每一個結果都需要印出來。但每個計算都需要有結果(回傳)。
在瀏覽器打開DevTools,每一行都會幫你回傳
Immutable 觀念
MDN Primitive values:
All types except objects define immutable values (that is, values which can't be changed). For example, Strings are immutable. We refer to values of these types as "primitive values".
var a = "hello"
a.toUpperCase()
console.log(a) //hello
//a 不會因為這樣寫而改變
var b = "hello hello"
b = b.toUpperCase()
console.log(b)
// 要改變原本的要用一個變數來接,不能直接改變(不可變)。
但物件型別的不太一樣,以Array舉例:
var arr = [1, 2, 3]
arr.push(4) //不用寫成 arr = arr.push(4) 會直接改到原本的陣列
console.log(arr) //[1, 2, 3, 4]
var arr2 = [4, 3, 2, 1]
arr2.join(",") //應該要回傳字串的,這樣寫會改不到。要寫成arr = arr.join(",")
console.log(arr2) //[4, 3, 2, 1]
arr2 = arr2.join(",")
console.log(arr2) //4,3,2,1 -> 這是字串
通常使用Array Method會回傳成基本型別的都不太會改到原本的值,但回傳成array的大部分都會改到原本的array。