当前位置: 首页 > 知识库问答 >
问题:

在条件中=符号(单)有什么用?

居和顺
2023-03-14

我在一些文章中读到,在一些语言中,比如JavaScript,赋值运算符可以用于条件语句。我想知道那次行动背后的逻辑是什么?据我所知,条件检查语句中只允许使用比较运算符。

共有3个答案

莘欣怿
2023-03-14

有两个因素共同产生这种效果:

  • 在许多语言中,包括JavaScript,表单let=right的表达式将计算为新的let。例如,a=b=c=0将所有的abc设置为零。
  • 在许多语言中,包括JavaScript,可以使用各种各样的值作为条件表达式。if(7)等效于if(true); soif(a=7)等效于a=7; if(true)而不是假定预期的if(a==7).
微生承业
2023-03-14

在JavaScript(和许多其他语言)中,当一个值分配给一个变量时,“返回”的值就是分配给变量的值。因此,这种语句可以在任何赋值都以标准方式计算的条件下使用。

例如:

var y = 0;
if(x = y){
    alert("Y(and thus X) is Truthy");
}
else{
    alert("Y(and thus X) is Falsy");
}
莘翰采
2023-03-14

条件检查语句中允许使用任何表达式。如果表达式的值不是布尔值,那么它将被转换为布尔值以确定语句应该做什么。

例如,您可以在if语句中使用数字:

if (1) { ... }

任何非零数字都将转换为true

在Javascript中,赋值也是一个表达式,即它有一个值。表达式的值与分配给变量的值相同。

因此,可以在条件检查语句中使用赋值表达式,如果需要,表达式的值将转换为布尔值:

if (x = 1) { ... }

在条件检查语句中使用赋值可能很有用,如果应该使用赋值来控制发生的事情。例如,如果你有一个函数,它为第一次调用返回不同的值,那么当没有更多的值时,你可以在循环中使用它:

while (line = getLine()) {
  document.write(line);
}

你可以在赋值与逻辑分离的情况下做到这一点,但是代码变得更加复杂:

while (true) {
  line = getLine();
  if (line == null) break;
  document.write(line);
}
 类似资料:
  • 有人能解释一下CSS中“~”符号的用法吗? 我举了一个例子 我在这里没有得到~符号的用法。请帮帮我。

  • 问题内容: Apple编写的有关SwiftUI的教程使用美元符号来绑定数据,而我在查找有关SwiftUI中此数据绑定的更多信息时遇到了麻烦。 您可以使用$前缀来访问对状态变量或其属性之一的绑定。 这是某种类型参数吗?那是使用“&”号传递的。 问题答案: 该是与物业代表一起使用。 它 不是运算符 ,而是 前缀 (感谢@matt!)。 有关属性委托的更多信息,请参见此Swift Evolution 文

  • 为什么我不能在c#-6字符串插值中使用内联条件运算符,而不将其括在括号中? 以及错误: 如您所见,解析器似乎遇到了困难。这是一个错误,还是字符串插值机制的一个特性?

  • Java8为我们提供了许多有趣的方法来使用函数接口,并与它们一起使用了一个新的注释:@functionalinterface。它的工作是告诉编译器,如果我们没有遵守函数接口的规则(只有一个需要重写的抽象方法),就对我们大喊大叫。 java.util.function包中有43个带有这个注释的接口。在JDK.1.8.0/src中搜索只有57次点击。为什么其他可以添加的接口(如AutoCloseabl

  • 问题内容: 我有些困惑,为什么我在PHP中看到一些代码,这些代码的字符串用单引号引起来,有时用双引号引起来。 我只是在.NET或C语言中知道,如果用单引号引起来,则意味着它是一个字符,而不是字符串。 问题答案: PHP字符串不仅可以通过 _两种_方式指定,还可以通过 四种 方式指定。 用单引号引起来的字符串几乎可以完全“按原样”显示事物。变量和大多数转义序列将不被解释。唯一的例外是,要显示文字单引

  • 问题内容: 我已经检查了一些站点,它们的网址中带有井号(#)。它有什么作用? 问题答案: 这是“片段”或“命名锚点”。您可以用来链接到文档的 一部分 。通常,当您链接到页面时,浏览器会在页面顶部将其打开。但是,您链接到一半的部分,则可以使用该片段链接到该标题(或其他内容)。 如果页面内没有标签,则浏览器将仅链接到页面顶部。如果该片段为空,那么它也将仅链接到页面顶部。 仅 对于片段,这只是到 当前