为什么加了()会自动调用

为什么加了()会自动调用

http://img1.sycdn.imooc.com/climg//58edac62000154fd03990362.jpg


为什么DOM 0级事件调用具名函数后面加( )会自动调用函数,而不是通过事件触发


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
Hbrsql 2017-04-12 16:57:54

是因为上一节的HTML事件在函数后面加了(),同时通过onclick事件才能触发,产生的疑惑吗?

HTML事件: <input type="button" onclick="clickBtn()">        #有括号

DOM 0级事件: btn.onclick=clickBtn;       #没括号


在JS中,函数后面加了(),就会马上调用.所以

 btn.onclick=clickBtn,右边不能写成clickBtn().


而HTML事件处理程序会创建一个封装着元素属性值的函数:

onclick="clickBtn()"=function(){clickBtn();},

右边仍是一个没有调用的函数,跟JS中的原理是统一的.


以上为个人理解,供参考.

  • 加个括号相当于即时函数,我明白你的意思
    2017-05-11 21:46:25
路大锤 2017-04-12 15:57:18

函数定义与执行,例:

//声明一个函数

function abc(){

    // 代码

}

abc(); //调用一个函数并执行。

所以,图中btn.onclik=clickBtn;是指单击的时候执行clickBtn这个函数,

而clickBtn();是调用clickBtn这个函数,所以是不用事件触发的。


  • 提问者 xurdy #1
    调用 和 执行有什么区别?
    2017-04-12 23:22:30
从何说起_ 2017-04-12 15:54:43

如果函数名后面加上圆括号就表示立即调用(执行)这个函数里面的代码(花括号部分的代码)。望采纳

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
HTML5与CSS3实现动态网页 2018
  • 参与学习       1887    人
  • 提交作业       4643    份
  • 解答问题       5760    个

有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师