javascript - 在一个简单的翻牌JS函数中解析turned = !turned的逻辑
问题描述
我正在审查 Codepen 上一个可点击的双面抽认卡的相当简单的 ES6 实现。
我能够解析 99% 的代码,但这个toggleTurn
函数让我摸不着头脑。
具体来说,我想知道:
(1)在此函数的开头将turned
值设置为其逻辑相反 ( ) 的目的是什么?!turned
(2)为什么要把event
对象作为参数传递给这个函数?toggleTurn()
在事件侦听器中调用函数不是更简单、更容易吗?
function toggleTurn(e) {
turned = !turned;
if (turned) {
this.classList.add("turned");
} else {
this.classList.remove("turned");
}
}
我敢肯定这里的答案是显而易见的,非常感谢您的时间和耐心!
解决方案
在此函数的开头将转值设置为其逻辑相反 (!turned) 的目的是什么?
如果在"turned"
html 元素上添加了类,则表示turned
为真。否定它的值将给出false
哪个将执行该else
块。
类似地,如果"turned"
没有在 html 元素上添加类,则表示turned
为 false。否定它的值将给出true
哪个将执行该if
块。
您可以使用切换方法简化功能:
function toggleTurn() {
this.classList.toggle("turned");
}
为什么需要将事件对象作为参数传递给这个函数?在事件侦听器中调用 toggleTurn() 函数不是更简单、更容易吗?
如果它没有在函数中使用,则不需要它。如果你愿意,你可以删除它。但是,它确实可以提醒您该函数用作事件侦听器。
推荐阅读
- javascript - Redux-form如何在勾选复选框时更新/附加特定值到initialValue中的键
- java - 仅包含数字的输入字符串的 Java 数字格式异常
- reactjs - 反应:无法使用 onclick 事件获取 NavDropdown 的 ID
- excel - 如何使Excel按原样表示单元格值而不是公式?
- python - python请求和urllib https错误
- apache-kafka - 暂停骆驼卡夫卡消费者
- dependency-injection - 使用哪个依赖注入“工厂”?
- python - 是否可以将嵌套的元组列表转换为 numpy 数组?
- android - 如何检测应用程序是否安装在物理设备与虚拟设备/模拟器上?
- dynamics-crm - Dynamics CRM OnPrem NavigateTo