顯示廣告
隱藏 ✕
※ 本文為 terievv 轉寄自 ptt.cc 更新時間: 2018-09-26 12:39:04
看板 Ajax
作者 peanut97 (丁守中)
標題 Re: [問題] 新手請教括號有無的差別
時間 Sun Aug 12 10:37:41 2018


※ 引述《liquidbox (樹枝擺擺)》之銘言:
: 我正在自學Javascript,以打好用Python寫爬蟲程式的基礎
: 現在看書自學發現以下問題(不重要的HTML標籤已省略)
: <body>
:         <input type="button" id="b1" value="顯示訊息">
:         <script language="javascript">
:                 var b1 = document.getElementById("b1");
:                 b1.onclick = alerts();  //<----這個括號
:                 function alerts()
:                 {
:                         window.alert("hello world");
:                 }
:         </script>
: </body>
: 以上程式想試寫,按下「顯示訊息」按鈕後,自動跳出hello world,
: 但必須是沒有括號才是正確結果,也就按下按鈕後才跳出hello world,
: 如果如上面黃色部分,加上刮號後,「HTML一載入」瀏覽器就跳出hello world
: 雖然想要上網查原因,但這個實在不知道是什麼原因造成刮號有無的差別
: 在此請教,感謝回應

可以想成 () 代表執行。

因為程式已經先在下面定義好 function alerts(){ ... } 了

所以此時環境認識了alerts是個函數。


在指定onclick 事件要呼叫什麼函數時,

就只要給名稱就好。

這是javascript的特性

因為在js中,可以設 let a = 3,也可以 let a = function(){...}



另外可以看一下 IIFE(立即執行函數)

你宣告一個函數後

想要馬上執行他

一個是:

function alerts(){ console.log('hi'); }  
alerts();   //在後面呼叫


用IIFE的話就是

 (  ()=>{ console.log('hi');}  )();

最後紅色的括號代表『執行它』



打得有點亂 希望有幫助Orz

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 124.6.15.211
※ 文章代碼(AID): #1RRvrvLq (Ajax)
※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1534041465.A.574.html
liquidbox: 真是太詳細了,非常感謝您的解說1F 08/12 11:30

--
※ 看板: terievv 文章推薦值: 0 目前人氣: 0 累積人氣: 183 
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇