提问人:karthiK 提问时间:11/1/2023 更新时间:11/1/2023 访问量:50
了解 JavaScript 中条件操作的箭头函数行为
Understanding Arrow Function Behavior with Conditional Operations in JavaScript
问:
我正在学习 JavaScript 中的箭头函数,并尝试根据某个值有条件地将 show 的值设置为 false。为此目的使用“&&”运算符时,我遇到了以下代码的语法问题:
const obCallback = (something) =>
something.value === 1
&& show = false;
我知道当我这样做时它会起作用:
const obCallback = (something) => {
if (something.value === 1) {
show = false;
}
};
或者这个:
const obCallback = (something) => something.value === 1 ? show = false : undefined;
你们中的任何人都可以解释为什么第一个代码片段不起作用而另一个代码片段不起作用吗?我们可以只进行函数调用,而不在箭头函数中的“&&”之后进行赋值,因为以下方法似乎有效吗?
const obCallback = (something) =>
something.value === 1
&& Dance(); //This works
我知道这似乎是一个基本问题,但我正在寻求一个彻底的解释,以提高我对将来使用箭头函数的理解。
答:
3赞
Barmar
11/1/2023
#1
=
优先级低于 和 ,因此您的表达式被解析为===
&&
const obCallback = (something) =>
(something.value === 1
&& show) = false;
这是无效的,因为您无法分配给表达式。添加括号以强制进行预期的分组
const obCallback = (something) =>
something.value === 1
&& (show = false);
也就是说,大多数程序员认为使用逻辑运算符代替控制流是很糟糕的形式。为此使用语句。if
评论
(show = false);