[前端] 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> 加不加分号属于代码规范问题,不同规范要求不一样;不管加不加,现在的编辑器都足够智能,可以识别一句代码到哪里结束,所以你不加也不会报错 无所谓,看自己 代码规范而已,不过有的时候少;会报错,看情况 很多情况都不需要加分号,不过在一些地方不能加分号,如果出问题的话编译器会报错 @氖气
那W3C的规范是啥?或者说我要去哪查这个规范呢? 我去W3CSCHOOLS找,也没找到案例。
~~~~~~~~~~~~~~~~~~~~
@wuyujiesong
@栗子Lelouch
你们的回答好象比彼相互矛盾。一个说不加,有可能会出错;一个说加会出错?
{:1_904:}{:1_908:}
前端面试基础:事件的绑定方式有几种? 这个不是重点吧 古月不傲 发表于 2020-3-13 18:57
这个不是重点吧
问问呀。
把问问题当成一种休息。
比如:
if (var i = 0; i < 5; i++)
某马老师说,符号之间要有空格。虽然没有空格也能运行。 加不加;分号重不重要?
以下是个人意见
不加可能是陋习或者忘记了,楼主又想按照标准规范来写,最好哪句结束就在哪加上,毕竟解析都是优先以分号结束,话不多说,我把楼主的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