吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1860|回复: 12
收起左侧

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

  [复制链接]
clearwater 发表于 2020-3-13 18:08
本帖最后由 clearwater 于 2020-3-13 20:22 编辑

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


divs[1].addEventListener('click', fn)

我看老师用removeEventListener时用没分号,但是detachEvent用分号。不知是不是他的笔误?


[JavaScript] 纯文本查看 复制代码
<!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[0].onclick = function() {
                alert(11);
                // 1. 传统方式删除事件
                divs[0].onclick = null;
            }
            // 2. removeEventListener 删除事件
        divs[1].addEventListener('click', fn) // 里面的fn 不需要调用加小括号

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

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

</html>

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

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

免费评分

参与人数 1吾爱币 +1 收起 理由
clearwater + 1 谢谢@Thanks!

查看全部评分

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

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



mysticalspear 发表于 2020-3-13 18:51
前端面试基础:事件的绑定方式有几种?
古月不傲 发表于 2020-3-13 18:57
这个不是重点吧
 楼主| clearwater 发表于 2020-3-13 19:00

问问呀。

把问问题当成一种休息。

比如:

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

某马老师说,符号之间要有空格。虽然没有空格也能运行。
Takitooru 发表于 2020-3-13 19:53
加不加;分号重不重要?
以下是个人意见
不加可能是陋习或者忘记了,楼主又想按照标准规范来写,最好哪句结束就在哪加上,毕竟解析都是优先以分号结束,话不多说,我把楼主的js代码分别做了两种格式
一种是压缩过的。另一种是原格式。
楼主你试试就知道了,测试过后,你会发现压缩过的到底为什么报错了

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

压缩成一行的js
[JavaScript] 纯文本查看 复制代码
var divs=document.querySelectorAll('div');divs[0].onclick=function(){alert(11);divs[0].onclick=null}divs[1].addEventListener('click',fn)function fn(){alert(22);divs[1].removeEventListener('click',fn)}divs[2].addEventListener('onclick',fn1);function fn1(){alert(33);divs[2].detachEvent('onclick',fn1)}

原格式
[JavaScript] 纯文本查看 复制代码
var divs = document.querySelectorAll('div');
        divs[0].onclick = function() {
                alert(11);
                divs[0].onclick = null;
            }
        divs[1].addEventListener('click', fn) 
 
        function fn() {
            alert(22);
            divs[1].removeEventListener('click', fn);
        }
        divs[2].addEventListener('onclick', fn1);
 
        function fn1() {
            alert(33);
            divs[2].detachEvent('onclick', fn1);
        }

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
clearwater + 1 + 1 谢谢@Thanks!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-30 06:06

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表