※ 本文為 terievv 轉寄自 ptt.cc 更新時間: 2018-09-26 12:39:04
看板 Ajax
作者 標題 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
推 : 真是太詳細了,非常感謝您的解說1F 08/12 11:30
--
※ 看板: terievv 文章推薦值: 0 目前人氣: 0 累積人氣: 183
回列表(←)
分享