作者peanut97 (丁守中)
看板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
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Ajax/M.1534041465.A.574.html
1F:推 liquidbox: 真是太详细了,非常感谢您的解说 08/12 11:30