Javascript =符号(单个)在条件中有何用途?
我在一些文章中读到,在一些语言中,比如JavaScript,赋值运算符可以用于条件语句。我想知道那次行动背后的逻辑是什么?据我所知,在条件检查语句中只允许使用比较运算符。在JavaScript(和许多其他语言)中,当一个值分配给变量时,“returned”值就是分配给变量的值。因此,这种语句可以在任何赋值都以标准方式计算的条件下使用 例如:Javascript =符号(单个)在条件中有何用途?,javascript,if-statement,conditional-statements,assignment-operator,Javascript,If Statement,Conditional Statements,Assignment Operator,我在一些文章中读到,在一些语言中,比如JavaScript,赋值运算符可以用于条件语句。我想知道那次行动背后的逻辑是什么?据我所知,在条件检查语句中只允许使用比较运算符。在JavaScript(和许多其他语言)中,当一个值分配给变量时,“returned”值就是分配给变量的值。因此,这种语句可以在任何赋值都以标准方式计算的条件下使用 例如: var y = 0; if(x = y){ alert("Y(and thus X) is Truthy"); } else{ alert(
var y = 0;
if(x = y){
alert("Y(and thus X) is Truthy");
}
else{
alert("Y(and thus X) is Falsy");
}
在JavaScript(和许多其他语言)中,当一个值分配给一个变量时,“返回”的值就是分配给变量的值。因此,这种语句可以在任何赋值都以标准方式计算的条件下使用
例如:
var y = 0;
if(x = y){
alert("Y(and thus X) is Truthy");
}
else{
alert("Y(and thus X) is Falsy");
}
这可以用于进行条件检查,也可以在其后面使用
值
,而无需写入更多行
if (value = someFunction()) {
...
}
这是一种有效的语法,但不鼓励使用。在相当多的语言中,这是明确禁止的,但有些语言也不制定这一规则(例如C)。这可用于进行条件检查,并在其后使用
值,而无需写更多行
if (value = someFunction()) {
...
}
这是一种有效的语法,但不鼓励使用。在相当多的语言中,这是明确禁止的,但有些语言也没有制定这一规则(例如C)。有两个因素共同作用,产生了这种效果:
- 在许多语言中,包括JavaScript,形式为
left=right
的表达式计算结果为新的left
。例如,a=b=c=0
将所有a
、b
和c
设置为零
- 在许多语言中,包括JavaScript,各种各样的值都可以用作条件表达式
if(7)
相当于if(true)
;所以如果(a=7)
等于a=7;if(true)
而不是假定的if(a==7)
有两个因素共同产生这种效果:
- 在许多语言中,包括JavaScript,形式为
left=right
的表达式计算结果为新的left
。例如,a=b=c=0
将所有a
、b
和c
设置为零
- 在许多语言中,包括JavaScript,各种各样的值都可以用作条件表达式
if(7)
相当于if(true)
;所以如果(a=7)
等于a=7;if(true)
而不是假定的if(a==7)
将值赋值为=将返回该值。您可以使用它在测试结果是真还是假(null、0、“未定义、NaN、false)时进行赋值
这会在测试myArgument时将myArgument指定给myVar。另一个更具体的例子:
If (myVar = 3+2) ...
// same as:
// myVar=3+2;
// if (5) ...
这样做的好处是代码更简洁,有时会以清晰度为代价。使用=赋值返回该值。您可以使用它在测试结果是真还是假(null、0、“未定义、NaN、false)时进行赋值
这会在测试myArgument时将myArgument指定给myVar。另一个更具体的例子:
If (myVar = 3+2) ...
// same as:
// myVar=3+2;
// if (5) ...
这样做的好处是代码更加紧凑、简洁,有时会以清晰度为代价。条件检查语句中允许使用任何表达式。如果表达式的值不是布尔值,那么它将被转换为布尔值以确定语句应该做什么
例如,您可以在if
语句中使用数字:
if (1) { ... }
任何非零数字都将转换为true
在Javascript中,赋值也是一个表达式,即它有一个值。表达式的值与分配给变量的值相同
因此,可以在条件检查语句中使用赋值表达式,如果需要,表达式的值将转换为布尔值:
if (x = 1) { ... }
如果应该使用指定的值来控制发生的情况,那么在条件检查语句中使用赋值可能会很有用。例如,如果有一个函数为第一次调用返回不同的值,那么当没有更多值时,可以使用null
,您可以在循环中使用该函数:
while (line = getLine()) {
document.write(line);
}
当然,您可以将赋值与逻辑分离,但代码会变得更复杂:
while (true) {
line = getLine();
if (line == null) break;
document.write(line);
}
条件检查语句中允许使用任何表达式。如果表达式的值不是布尔值,那么它将被转换为布尔值以确定语句应该做什么
例如,您可以在if
语句中使用数字:
if (1) { ... }
任何非零数字都将转换为true
在Javascript中,赋值也是一个表达式,即它有一个值。表达式的值与分配给变量的值相同
因此,可以在条件检查语句中使用赋值表达式,如果需要,表达式的值将转换为布尔值:
if (x = 1) { ... }
如果应该使用指定的值来控制发生的情况,那么在条件检查语句中使用赋值可能会很有用。例如,如果有一个函数为第一次调用返回不同的值,那么当没有更多值时,可以使用null
,您可以在循环中使用该函数:
while (line = getLine()) {
document.write(line);
}
当然,您可以将赋值与逻辑分离,但代码会变得更复杂:
while (true) {
line = getLine();
if (line == null) break;
document.write(line);
}
谢谢你的解释:)所以这些类型的评估只能在零和非零比较的情况下进行,对吗???@BlackPanda:对不起,我不太理解你的问题。在JavaScript中,任何值都可以用作条件表达式if({})
表示if(true)
,if