我这里想提一个有关js中classList.remove用法的问题
class.remove在移除一个不存在的类时是不会报错的,所以我们有时候会直接写上类似于:ele.classList.remove(‘active’)这样的代码移除掉高亮的样式,但是为什么有时候还有“要去判断是否存在这个类,如果不存在直接移除的话就会报错”这种情况,比如:
先获取元素:
const active = document.querySelector(‘.active’)
然后利用逻辑中断去判断是否存在这个类,如果存在就移除,如果不存在就不移除:
active && active.classList.remove(‘active’)
那问题来了,既然之前说了classList.remove是删除一个不存在的类是都会执行,不会报错的的方法,为什么不直接写:
document.querySelector(‘.active’).classList.remove(‘active’)直接不管它有没有这个类都删除一遍,为下一个突出显示做服务呢?
我这里放了一张截图,我不明白为什么最后一段的代码不需要判断是否存在,直接写就不会报错,它的条件是如果向左滑动就会添加,不是向左就会移除,而且它本身是没有active这个类的,这个类是不存在的,那为什么我直接向右滑动触发else代码就不会报错呢?同样是不存在的类,为什么一个要判断是否存在后再移除,一个是可以直接用?
希望能有人帮我解惑一下,感激不尽