看板 Ajax 關於我們 聯絡資訊
※ 引述《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 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1534041465.A.574.html
liquidbox: 真是太詳細了,非常感謝您的解說 08/12 11:30