关于DOM0级与DOM2级事件调用,需不需要在函数名后加括号

最近在写代码的时候遇到了一个问题(关于是不是需要在被调用的函数名后加括号),总结一下大概是这个样子:

在实际运行的过程中可以发现几种不同的现象:
test1: 在刷新页面的瞬间立即执行
test2: 点击test2的按钮执行
test3: 点击test3的按钮执行
test4: 点击test4按钮不执行弹框操作

这是为什么呢?
1.  首先 test1 和 test2 都是 DOM2 级事件,他们的区别是,是否在函数名后面加();
      函数名后面加括号表示立即执行,因此test1在刷新页面后立即执行弹框操作;
     函数名后面不加括号则会等待事件触发时执行;

2.  test3 和 test4 都是属于 DOM0 级事件调用的方式;
     test3 可以执行弹框操作,test4 不执行, 因为这种函数事件写在标签属性中(DOM0 级写法),它的本质是会被当做字符串,当点击事件触发的时候,这段字符串会执行eval解析,点击一次, eval解析一次。因此,如果不在函数名后面带括号(),点击按钮,执行eval解析的时候无法做到立即执行;
     假如我们在事件绑定的地方用js语句替代函数名也是可以做到立即执行,因为当点击按钮时,eval执行的就是一段可以弹框的js语句而不是需要调用的函数名
    EG: <button οnclick="for(var a=0;a<10;a++)alert(a)">alert 0 to 9</button>

3.  因此关于DOM0级与DOM2级如何做到点击按钮,调用事件:
     DOM0 级写法,需要在被调用的函数名后加括号
     DOM2 级写法,不需要在函数名后加括号
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值