什么时候可以在 javascript 中使用逻辑赋值?

When is it okay/appropriate to use logical assignment in javascript?

提问人:jost21 提问时间:4/2/2022 更新时间:4/2/2022 访问量:214

问:

我以前使用过像 Javascript 一样的逻辑赋值,关于它的 SO 有很多问题。
举一些:
b = a || []

从我所读到的,是合法的代码。b = a || []

但是,我注意到在最近的一个案例中(检查另一个脚本设置的变量),此代码无法按预期工作。
我以为代码会检查是否是假的,如果是,将被分配给.由于是假的,我排除了代码在未定义的情况下工作和分配。
a[]bundefined[]a

但此代码会导致错误:

let b;

b = a || [];
console.log(b);

a = ["1", "2", "3"];
b = a || [];
console.log(b);

韦拉斯

let b;

b = typeof a == "undefined" ? [] : b;
console.log(b);

a = ["1", "2", "3"];
b = a || [];
console.log(b);

不。 为什么它会导致错误,当错误说 Uncaught ReferenceError: a is not defined,这意味着是 ?aundefined

何时可以使用逻辑赋值?只有当保证至少声明变量 (a) 时?

javascript 错误处理 逻辑运 赋值运算符

评论

1赞 VLAZ 4/2/2022
读取未声明的变量始终是一个错误。这不是假的。我建议你永远不要使用未声明的变量。
1赞 jost21 4/2/2022
但是为什么不会导致错误呢?b = typeof a == "undefined" ? [] : b;
1赞 Daniel Cheung 4/2/2022
由于 JavaScript 现在具有 null 合并运算符 ,在实践中,它比用于“回退”行为要安全得多,因为我们必须读取类型转换图表以确保行为符合我们的预期。??||
1赞 VLAZ 4/2/2022
不,这始终取决于你。除非你很草率或只是不想编写正确的代码,否则没有真正的选择“可能未声明”。
2赞 VLAZ 4/2/2022
typeof !== “undefined” vs. != null |变量 === 未定义 vs. 类型变量 === “未定义” |如何在 JavaScript 中检查“未定义”?|如何在 JavaScript 中检查未定义的变量

答: 暂无答案