我在一些文章中读到,在一些语言中,比如JavaScript,赋值运算符可以用于条件语句。我想知道那次行动背后的逻辑是什么?据我所知,条件检查语句中只允许使用比较运算符。
有两个因素共同产生这种效果:
let=right
的表达式将计算为新的let
。例如,a=b=c=0
将所有的a
,b
和c
设置为零。 if(7)
等效于if(true)
; soif(a=7)
等效于a=7; if(true)
而不是假定预期的if(a==7)
.在JavaScript(和许多其他语言)中,当一个值分配给一个变量时,“返回”的值就是分配给变量的值。因此,这种语句可以在任何赋值都以标准方式计算的条件下使用。
例如:
var y = 0;
if(x = y){
alert("Y(and thus X) is Truthy");
}
else{
alert("Y(and thus X) is Falsy");
}
条件检查语句中允许使用任何表达式。如果表达式的值不是布尔值,那么它将被转换为布尔值以确定语句应该做什么。
例如,您可以在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中“~”符号的用法吗? 我举了一个例子 我在这里没有得到~符号的用法。请帮帮我。
为什么我不能在c#-6字符串插值中使用内联条件运算符,而不将其括在括号中? 以及错误: 如您所见,解析器似乎遇到了困难。这是一个错误,还是字符串插值机制的一个特性?
问题内容: Apple编写的有关SwiftUI的教程使用美元符号来绑定数据,而我在查找有关SwiftUI中此数据绑定的更多信息时遇到了麻烦。 您可以使用$前缀来访问对状态变量或其属性之一的绑定。 这是某种类型参数吗?那是使用“&”号传递的。 问题答案: 该是与物业代表一起使用。 它 不是运算符 ,而是 前缀 (感谢@matt!)。 有关属性委托的更多信息,请参见此Swift Evolution 文
Java8为我们提供了许多有趣的方法来使用函数接口,并与它们一起使用了一个新的注释:@functionalinterface。它的工作是告诉编译器,如果我们没有遵守函数接口的规则(只有一个需要重写的抽象方法),就对我们大喊大叫。 java.util.function包中有43个带有这个注释的接口。在JDK.1.8.0/src中搜索只有57次点击。为什么其他可以添加的接口(如AutoCloseabl
问题内容: 我有些困惑,为什么我在PHP中看到一些代码,这些代码的字符串用单引号引起来,有时用双引号引起来。 我只是在.NET或C语言中知道,如果用单引号引起来,则意味着它是一个字符,而不是字符串。 问题答案: PHP字符串不仅可以通过 _两种_方式指定,还可以通过 四种 方式指定。 用单引号引起来的字符串几乎可以完全“按原样”显示事物。变量和大多数转义序列将不被解释。唯一的例外是,要显示文字单引
问题内容: 我已经检查了一些站点,它们的网址中带有井号(#)。它有什么作用? 问题答案: 这是“片段”或“命名锚点”。您可以用来链接到文档的 一部分 。通常,当您链接到页面时,浏览器会在页面顶部将其打开。但是,您链接到一半的部分,则可以使用该片段链接到该标题(或其他内容)。 如果页面内没有标签,则浏览器将仅链接到页面顶部。如果该片段为空,那么它也将仅链接到页面顶部。 仅 对于片段,这只是到 当前