「回傳」與「印出」的差異
return是 function 回傳的值- 「要印出東西」絕對要使用
console.log()
「回傳」跟「印出」是完全不同的概念
如果是執行 add(8, 9),就會印出 8 9
function add(a, b){
console.log(a, b)
}
add(8, 9)
// output: 8 9
如果是 console.log(add(8, 9)),就會印出 8 9 和 undefined
原因是:
在 function 裡面,如果沒有寫 return 的話,預設就會是 return undefined
console.log(add(8, 9)) 這句的執行順序是:
- 先執行
add(8, 9)這個函式:
- 函式裡面的第一行:
console.log(a, b)就會印出 8 9 - 函式裡面的第二行:
return undefined,就會是add函式的回傳值
- 再執行
console.log(add(8, 9)),就會印出add函式的回傳值(也就是 undefined)
function add(a, b){
console.log(a, b)
// 預設會是 return undefined
}
console.log(add(8, 9))
output:
8 9
undefined
如果沒有使用console.log(),在 console 就不會印出任何東西
function add(a, b){
return a + b
}
add(8, 9)
最好的寫法是:在 function 裡面 return,然後用 console.log() 印出 return 的值
function add(a, b){
return a + b
}
console.log(add(8, 9))
// output: 17
不好的寫法
這樣,我就沒辦法得到 function 的回傳值了(會回傳 undefined)
function add(a, b){
console.log(a + b)
}
console.log(add(8, 9))
output:
17
undefined
chrome devtool 的 Console
當我在使用 chrome devtool 的 Console 時,會是另一種不同的運作機制
我每執行一個指令,Console 就會自動幫我把「這個指令本身會產生的回傳值」給 log 出來
例如:
範例一
我執行完 var a = 1 之後,var a = 1 這個指令本身會產生的回傳值是 undefined,Console 就會把 undefined 給 log 出來

因為 a + 3 這個語句的回傳值是 4,所以就會印出 4

如果是 console.log(a + 3),會印出:
- 4 (前面沒有灰色箭頭)是「我
console.log(a + 3)出來的值」 - undefined (前面有灰色箭頭)是
console.log(a + 3)這個語句本身的回傳值

範例二
執行完 add 函式這個指令之後,這個指令本身的回傳值就是 undefined,所以會印出 undefined

執行 add(5, 7) 之後,會印出:
- 5 7 (前面沒有灰色箭頭)是「我
console.log(a, b)印出來的東西」 - 12 (前面有灰色箭頭)是「
add函式的回傳值」,也就是return a + b的值



