Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
缩短的if语句及其在JavaScript中的直接等价物_Javascript_If Statement_Boolean_Conditional Statements - Fatal编程技术网

缩短的if语句及其在JavaScript中的直接等价物

缩短的if语句及其在JavaScript中的直接等价物,javascript,if-statement,boolean,conditional-statements,Javascript,If Statement,Boolean,Conditional Statements,我已经学习JavaScript几个月了,我有一些问题 假设我们有这样一些if语句: if (something) if (!something) 从我所查找的内容来看,第一条语句检查某物的计算结果是否为真,而第二条语句检查条件是否为真(我记得读过!将其强制为布尔值,然后将其“反转”) 然而,我想知道这些语句在没有“缩短”时的直接等价物是什么。在真正使用之前,我想更深入地理解这样的代码 如果(某物)与如果(某物==true)相同吗?甚至是如果(某物===true) 如果(!something)

我已经学习JavaScript几个月了,我有一些问题

假设我们有这样一些if语句:

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
或其他类型的循环。或者只是一个直接变量声明。“实例”位于表达式级别。布尔运算符可以简化为布尔值。但实际上,在功能级别上没有“强制”发生。