【发布时间】:2020-09-19 02:24:39
【问题描述】:
我有一个原本为假的布尔值。但是在未来的某个时候,如果它的值改变(可以改变多次,但只能改变相同)就会成立。
例如,使用给定的伪代码
const hasChanged = false; // stateful
// This function can be called multipe times
const handleSubmit = () => {
// ...
hasChanged = true;
// ...
}
我总是将值“真”重新分配给我的布尔值......我认为,也许可以通过首先检查它是否为假来优化它,如下所示:
const handleSubmit = () => {
// ...
!hasChanged && hasChanged = true;
// ...
}
但这只有在条件检查(读取 + 检查)比 JS 中的写入操作快时才会成立,这我不知道。
有什么想法吗?
【问题讨论】:
-
这感觉一般你根本不需要担心,只要它不是 getter/setter 方法,你就不会增加任何额外的开销。然而,检查确实增加了更多开销,因为 JS 是 JIT 编译的,这意味着它需要 - 从技术上讲 - 编译更多代码。只需分配变量,因为从内存中获取和检查可能是更长的操作。以 teeny meeny mini 的幅度。以至于牺牲代码的可读性可能是不值得的。