剛開始學習時常常搞混的地方,關於什麼時候屬於「回傳」什麼時候得「印出」常常傻傻搞不清楚,在這裡做個筆記紀錄一下,我自己研究完後的理解。

這部分要先知道所謂的「回傳」在 JavaScript 使用的語法是return
而「印出」則是console.log

回傳:return

通常是使用在函式裡面,代表說回傳一個值的概念,這邊要注意,只是代表說會回傳一個值但是不會印出來,所以說假如去互叫一個只有retrun卻沒有console.log的函式,那會發現什麼也不會發生。

假如是想要在呼叫函式的時候,也可以印出值的話,就得在函式中去retrun出值,然後在外面的部分去進行console.log的東西才有辦法做得到。

1
2
3
4
5
function call(name) {
return name;
}

console.log(call("vic"));

印出:console.log

單純把被console.log裡面的值給印出來,跟回傳不一樣的地方是,假如今天函式內直接做console.log,那在外面呼叫時就會直接印出東西來。

印出東西的情境我覺得最多是用在找 bug 的時候,非常的方便建議多多利用,因為編譯的時候其實都不太會被錯,所以很多的錯誤都是要等程式執行之後才跑出來,這時候就可以用console.log慢慢尋找錯誤的地方。

瀏覽器上特殊的行為

在瀏覽器上假如使用 dev tool 去寫 JavaScript,會發現瀏覽器多幫忙做了一些事情,所以建議如果要做測試時或是想試寫一個函式是要印出值的,在 node.js 的環境下比較保險。

我發現瀏覽器多做的一些事情比如說像是寫一個函式裡面只有使用回傳retrun,但是如果只要呼叫這個函式,也是會直接把值給印出來,我大膽假設瀏覽器每次都會多幫忙在外面多幫忙做一次console.log,所以才會造成這種現象。

小結

新手卡關就是會卡在這裡了,但還是得花一些時間把這塊釐清清楚,兩個都很常用到,也很容易做出互相搭配,這邊最後提醒一下,retrun除了回傳值之外,它同時也代表著就到此結束,所以後面的程式碼就不會繼續進行下去了,這點要注意。

參考資料

「回傳」與「印出」的差異 | Lidemy 鋰學院