iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 8
0
Modern Web

JS 學習歷程系列 第 8

含笑苦讀只求自己不忘 - function 參數 / 變數

  • 分享至 

  • xImage
  •  

在學習 JS 這些日子以來,有個觀念常常一直忘記,這件事讓我身邊前輩都倍感困擾,今天來寫下這篇文,除了因為鐵人賽要發文(咦?),更重要的就是提醒自己:"不要在 function 裡面直接使用全域變數,如果要使用到全域變數就透過參數帶到 function 裡面使用",相信我默唸它七七四十九天,JS 大法練成之日一定就在不遠(歪樓):

  • 假設 khh 有 3 位嫻淑媽媽,分別住在 10 萬 / 35萬 / 15萬 的房子裡,寫成 陣列 / 物件就是:https://ithelp.ithome.com.tw/upload/images/20190908/20119922KC8Ww6QTiY.png

  • 又假設我是位愛探聽別人隱私的鄰居媽媽,現在很想知道 3 位媽媽住的房子價值多少錢,我有以下二種寫法:
    1.在 function 外面先使用 for 迴圈,並將 khh[i] 依序帶入 function 參數:
    https://ithelp.ithome.com.tw/upload/images/20190908/20119922AhaQWOfgXT.png
    2.將 khh 直接帶入 function 參數 ary,在 function 裡跑 for 迴圈:
    https://ithelp.ithome.com.tw/upload/images/20190908/20119922vNIAxJqQst.png

  • 以上都是正常 JS 寫法,但接下來的第三種寫法,其實也能產生我要的效果,但好孩子千萬不要這麼做:
    https://ithelp.ithome.com.tw/upload/images/20190909/20119922Pk5gMdP12r.png

不能這麼做的原因大致有以下 2 點:

  1. 如果 function 跟 Global 不在同一支 JS 就容易出錯,換言之就是呼叫外部檔案會出錯。
  2. function 有設定參數但是卻沒有使用它,一旦 function 較為複雜就容易產生無法預期的狀況。

因為頻頻踩到此雷,特別紀錄,與今後的自己共勉之。


上一篇
金牌投手 - return
下一篇
結衣我老婆啦 - 情侶理想身高差 * onClick(一)
系列文
JS 學習歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

1
江江好
iT邦新手 5 級 ‧ 2019-09-09 09:35:13

愛探聽別人隱私的鄰居媽媽XDDDDD
實用推!我也常常有這ㄍ問題~

Chita iT邦新手 5 級 ‧ 2019-09-10 15:20:46 檢舉

被大神推我害羞

1
紅茶小公主
iT邦新手 1 級 ‧ 2019-09-09 09:47:02

天哪~~~原來我一直都用錯XDDDD
收藏收藏

Chita iT邦新手 5 級 ‧ 2019-09-10 15:21:41 檢舉

血和淚的教訓讓我們一起傳承下去給學弟、妹吧!

我要留言

立即登入留言