在製作 針對輸入欄位資訊進行簡略的格式驗證時 發現一些讓我很疑惑的點
上來向各位大神請教
正常執行的狀態
https://codepen.io/UHU/pen/bXqKvY
錯誤的狀態
(load 完就直接執行 checkFormat(mobileNumberVal, emailAddressVal) 這個函式 而不是在點擊按鈕後才執行)
https://codepen.io/UHU/pen/NQpymz
疑惑的部分:
1 .
因為
addEventListener('click', functionName())
等同於直接呼叫 functionName()
然後你的 functionName() 沒有 return 值
所以在 EventListener 那 會得到 undefined
最後應該會變成
addEventListener('click', undefined)
2 .
可以用
checkFormatBtn.addEventListener('click', () => checkFormat(mobileNumber,emailAddress));
可是你的 mobileNumber, emailAddress
在最一開始就取值了
我想就算傳進去
應該也是空白
我會建議在 function 內取值就好
題外話 想請教大大回覆中codepen的片段
checkFormatBtn.addEventListener(
"click",
checkFormat
);
console.log(checkFormatBtn.Event)
在checkFormatBtn 上已綁定 checkFormat 這個 function
但為什麼 console.log(checkFormatBtn.Event) 仍會顯示undefined 呢?
因為...
那個是我測試忘記拿掉的
那個底下本來就沒有 Event
原來是這樣
那可以請教大大
console.log(foo.Event)
.Event 這個用法要如何使用呢?(或是其實並沒有這樣的用法XD)
我在 mdn 上只查到這個
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/events/Event
但找不到搭配 console.log 使用的例子
function Test(){
return "test"
}
let a = Test
let b = Test()
console.log(typeof(a)) // function
console.log(typeof(b)) // string
1.因為 Test 叫 function,Test() 叫"test"這個字串...沒加刮號叫函式本身,加了叫函式執行結果。
2.閉包