clearwater 发表于 2020-3-13 18:08

[前端] removeEventListener删除事件后面要加分号吗?

本帖最后由 clearwater 于 2020-3-13 20:22 编辑

下面代码是某前端的教程源码,讲的是删除事件。请教第30行后面要不要加分号;?
我自己抄写时,测试了一下加和没加效果都是一样的。


divs.addEventListener('click', fn)
我看老师用removeEventListener时用没分号,但是detachEvent用分号。不知是不是他的笔误?

{:1_904:}
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
      div {
            width: 100px;
            height: 100px;
            background-color: pink;
      }
    </style>
</head>

<body>
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <script>
      var divs = document.querySelectorAll('div');
      divs.onclick = function() {
                alert(11);
                // 1. 传统方式删除事件
                divs.onclick = null;
            }
            // 2. removeEventListener 删除事件
      divs.addEventListener('click', fn) // 里面的fn 不需要调用加小括号

      function fn() {
            alert(22);
            divs.removeEventListener('click', fn);
      }
      // 3. detachEvent
      divs.attachEvent('onclick', fn1);

      function fn1() {
            alert(33);
            divs.detachEvent('onclick', fn1);
      }
    </script>
</body>

</html>

氖气 发表于 2020-3-13 18:15

加不加分号属于代码规范问题,不同规范要求不一样;不管加不加,现在的编辑器都足够智能,可以识别一句代码到哪里结束,所以你不加也不会报错

wolaiwojian 发表于 2020-3-13 18:18

无所谓,看自己

wuyujiesong 发表于 2020-3-13 18:21

代码规范而已,不过有的时候少;会报错,看情况

栗子Lelouch 发表于 2020-3-13 18:27

很多情况都不需要加分号,不过在一些地方不能加分号,如果出问题的话编译器会报错

clearwater 发表于 2020-3-13 18:41

@氖气

那W3C的规范是啥?或者说我要去哪查这个规范呢? 我去W3CSCHOOLS找,也没找到案例。
~~~~~~~~~~~~~~~~~~~~
@wuyujiesong

@栗子Lelouch

你们的回答好象比彼相互矛盾。一个说不加,有可能会出错;一个说加会出错? 

{:1_904:}{:1_908:}

mysticalspear 发表于 2020-3-13 18:51

前端面试基础:事件的绑定方式有几种?

古月不傲 发表于 2020-3-13 18:57

这个不是重点吧

clearwater 发表于 2020-3-13 19:00

古月不傲 发表于 2020-3-13 18:57
这个不是重点吧
问问呀。

把问问题当成一种休息。

比如:

if (var i = 0; i < 5; i++)

某马老师说,符号之间要有空格。虽然没有空格也能运行。

Takitooru 发表于 2020-3-13 19:53

加不加;分号重不重要?
以下是个人意见
不加可能是陋习或者忘记了,楼主又想按照标准规范来写,最好哪句结束就在哪加上,毕竟解析都是优先以分号结束,话不多说,我把楼主的js代码分别做了两种格式
一种是压缩过的。另一种是原格式。
楼主你试试就知道了,测试过后,你会发现压缩过的到底为什么报错了

测试时候最好打开浏览器的F12开发者模式,以便观察

压缩成一行的js
var divs=document.querySelectorAll('div');divs.onclick=function(){alert(11);divs.onclick=null}divs.addEventListener('click',fn)function fn(){alert(22);divs.removeEventListener('click',fn)}divs.addEventListener('onclick',fn1);function fn1(){alert(33);divs.detachEvent('onclick',fn1)}
原格式
var divs = document.querySelectorAll('div');
      divs.onclick = function() {
                alert(11);
                divs.onclick = null;
            }
      divs.addEventListener('click', fn)

      function fn() {
            alert(22);
            divs.removeEventListener('click', fn);
      }
      divs.addEventListener('onclick', fn1);

      function fn1() {
            alert(33);
            divs.detachEvent('onclick', fn1);
      }
页: [1] 2
查看完整版本: [前端] removeEventListener删除事件后面要加分号吗?