缩短的if语句及其在JavaScript中的直接等价物
我已经学习JavaScript几个月了,我有一些问题 假设我们有这样一些if语句:缩短的if语句及其在JavaScript中的直接等价物,javascript,if-statement,boolean,conditional-statements,Javascript,If Statement,Boolean,Conditional Statements,我已经学习JavaScript几个月了,我有一些问题 假设我们有这样一些if语句: if (something) if (!something) 从我所查找的内容来看,第一条语句检查某物的计算结果是否为真,而第二条语句检查条件是否为真(我记得读过!将其强制为布尔值,然后将其“反转”) 然而,我想知道这些语句在没有“缩短”时的直接等价物是什么。在真正使用之前,我想更深入地理解这样的代码 如果(某物)与如果(某物==true)相同吗?甚至是如果(某物===true) 如果(!something)
if (something)
if (!something)
从我所查找的内容来看,第一条语句检查某物
的计算结果是否为真
,而第二条语句检查条件是否为真
(我记得读过!
将其强制为布尔值,然后将其“反转”)
然而,我想知道这些语句在没有“缩短”时的直接等价物是什么。在真正使用之前,我想更深入地理解这样的代码
如果(某物)与如果(某物==true)相同吗?甚至是如果(某物===true)
如果(!something),那么与直接等价的“非缩短”(因为我没有更好的术语)是什么呢
谢谢您的帮助。第一部分:
当我们使用if(某物)
javascript将检查它是“Truthy”还是“Falsy”值
所以如果我们说
if(1) {
alert("Yes, it's true...");
}
javscript将检查1是否为“truthy”值,并且是否为。
一切不是虚假价值的东西都是真实的
Falsy值为:
0、0n、null、未定义、false、NaN和空字符串“”。
因此,如果我们直接把上面的任何一个放在括号中,它将返回false
e、 g.if(null).
if子句不会执行,因为null是falsy
第二部分:
当我们使用if(something==true)
时,我们检查一个值是否等于另一个值。如果类型不相同,因为我们使用的是==
强制
“胁迫”是什么意思?
如果我们说If('1'==1)
这将执行If子句,因为它返回true。在这种情况下,Javascript将1(数字)转换为“1”(字符串)
如果我们想严格地说“如果它们都是数字,我只想为真,我不在乎1是不是字符串”,那么我们使用
if(1=='1')
这将不会执行if子句(因为条件返回false)
因此,如果我们说if(false==false)
这将返回true,因为false等于false,if子句将被执行
如果我们说if(false)
或if(“”)
则if语句将不会执行,请注意区别
接下来,如果我们想使用否定,我们必须把!在我们求反的布尔值前面,不管它是if条件的一部分还是。。。这是没有办法的
但是,有一个较短的版本:
var a = 3;
var b = 2;
if(a===b) {
alert('A is equal to B');
} else {
alert('B is not equal to A');
}
这被认为是较短的(三元运算符):
注意,如果我们想使用多个语句,我们应该使用if-else
a = 3;
b = 2;
a===b ? alert('A is equal to B') : alert('B is not equal to A');
第1部分: 当我们使用
if(某物)
javascript将检查它是“Truthy”还是“Falsy”值
所以如果我们说
if(1) {
alert("Yes, it's true...");
}
javscript将检查1是否为“truthy”值,并且是否为。
一切不是虚假价值的东西都是真实的
Falsy值为:
0、0n、null、未定义、false、NaN和空字符串“”。
因此,如果我们直接把上面的任何一个放在括号中,它将返回false
e、 g.if(null).
if子句不会执行,因为null是falsy
第二部分:
当我们使用if(something==true)时,我们检查一个值是否等于另一个值。如果类型不相同,因为我们使用的是==
强制
“胁迫”是什么意思?
如果我们说If('1'==1)
这将执行If子句,因为它返回true。在这种情况下,Javascript将1(数字)转换为“1”(字符串)
如果我们想严格地说“如果它们都是数字,我只想为真,我不在乎1是不是字符串”,那么我们使用
if(1=='1')
这将不会执行if子句(因为条件返回false)
因此,如果我们说if(false==false)
这将返回true,因为false等于false,if子句将被执行
如果我们说if(false)
或if(“”)
则if语句将不会执行,请注意区别
接下来,如果我们想使用否定,我们必须把!在我们求反的布尔值前面,不管它是if条件的一部分还是。。。这是没有办法的
但是,有一个较短的版本:
var a = 3;
var b = 2;
if(a===b) {
alert('A is equal to B');
} else {
alert('B is not equal to A');
}
这被认为是较短的(三元运算符):
注意,如果我们想使用多个语句,我们应该使用if-else
a = 3;
b = 2;
a===b ? alert('A is equal to B') : alert('B is not equal to A');
if(something)
更像if(Boolean(something))
,因为if
将表达式强制为Boolean。if(Boolean(condition)==false)
它是、和值的混合体,完全是@Andreas。。它处理的是你的谎言。我怀疑是否真的强迫。布尔表达式在所有情况下都执行强制。所以任何作为布尔表达式编写的东西都会“强制”,比如说while
或其他类型的循环。或者只是一个直接变量声明。“实例”位于表达式级别。布尔运算符可以简化为布尔值。但是实际上在函数级别上没有“强制”发生。if(something)
更像是if(Boolean(something))
,因为if
强制表达式为Boolean。if(Boolean(condition)==false)
它是、和值的混合体,确切地说是@Andreas。。它处理的是你的谎言。我怀疑是否真的强迫。布尔表达式在所有情况下都执行强制。所以任何作为布尔表达式编写的东西都会“强制”,比如说while
或其他类型的循环。或者只是一个直接变量声明。“实例”位于表达式级别。布尔运算符可以简化为布尔值。但实际上,在功能级别上没有“强制”发生。