JavaScript中的一串空格是真的还是假的?
此表达式JavaScript中的一串空格是真的还是假的?,javascript,Javascript,此表达式'==true返回false,这意味着'为假 然而 if(“”){console.log('true')}else{console.log('false')}, 获取结果true 现在我很困惑,空白字符串是真的还是假的?字符串'是一个“真”值 以下是“falsy”值的列表: 你必须明白“真实”与true不是一回事。值可以是“truthy”,而不是true。例如,如果我们做了5==true,我们将得到false,即使5是一个“truthy”值 一般来说,几乎每个值都是“真实的”(不包括上面
'==true
返回false
,这意味着'
为假
然而
if(“”){console.log('true')}else{console.log('false')}
,
获取结果true
现在我很困惑,空白字符串是真的还是假的?字符串
'
是一个“真”值
以下是“falsy”值的列表:
你必须明白“真实”与true
不是一回事。值可以是“truthy”,而不是true
。例如,如果我们做了5==true
,我们将得到false
,即使5
是一个“truthy”值
一般来说,几乎每个值都是“真实的”(不包括上面提到的值)。但是,检查某事物是否“真实”/“虚假”的最简单方法是这样做:
var value = valueToTest;
if (value) {
console.log('Truthy!');
} else {
console.log('Falsy!');
}
从您的代码
'==true
中,您正在将字符串
与布尔值
进行比较,因此很明显这两种情况完全不同,因此返回值为false
在第二种情况下,即
如果(“”)
您正在检查是否有对象
或空
。这里,'
是一个有效的非空对象,因此您得到的结果为true。在第一个表达式中,您将“”空白字符串与布尔值true进行比较,这肯定会导致false,因为“”不等于true
在第二个表达式中,您只是在条件签入if语句中写入“”空格。根据if语句的执行规则,如果值存在,则它将计算为true。并且空格字符不是空的,所以它将为true语句执行代码块
希望这会有所帮助
如果将下列值直接放在if语句测试中,则其计算结果将为false
false
null
nil
undefined
NaN
''
0
上述值以外的值将计算为真
'
等于ASCII中的32。因此,'==true
表示32==true
,if(''>/code>)表示if(32)
一串空格是真的还是假的
正如其他人所指出的,这是真实的。然而,你的比较
' ' == true
正在检查'
是否真实。它正在比较两个值,这是不同的事情,并使用特定的比较规则。JS规范是,任何=
与布尔值的比较首先强制布尔值为一个数字:
如果类型(y)是布尔值,则返回比较结果x==ToNumber(y)
所以你的代码相当于
' ' == Number(true)
这和
' ' == 1
接下来,要比较字符串和数字,JS将字符串转换为数字。再次引用规范:
如果Type(x)是String,Type(y)是Number,则返回比较结果ToNumber(x)=y
所以我们现在有
Number(' ') == 1
编号(“”)
为0
。规范说明:
StringNumericLiteral::StrWhiteSpace的MV为0
这就变成了
0 == 1
正如您所发现的,这是错误的。有关详细信息,请参阅
正如其他答案所解释的,不等于(=
)与真不等于假。假是一个不同的概念,它大致意味着当需要布尔值时表达式被强制的值(例如if
语句的条件)是false。truthy和falsy指在逻辑测试中单独使用时,值的计算结果是true还是false,如if(“”){console.log('truthy');}else{console.log('falsy');}
使用松散比较来比较布尔值与将值转换为布尔值非常不同。'
不是一个对象。它是一个字符串。您可以从代码中说,'==true
您将字符串与布尔值进行比较,因此很明显,这两种情况完全不同,因此返回值为false,但''==false还将字符串与布尔值进行比较,根据您的逻辑,布尔值应该“完全不同”,但返回true,因此至少您的答案不完整。不,实际上您的两个陈述都不正确。不完全正确。空字符串'
也不是空的,但是它会导致if
语句不被计算,因为它是falsy。是的,空字符串是falsy,这就是我在上面的代码段中包含它的原因。所有这些都将计算为false,if语句将不会计算。值得指出的是,5==true
最终会比较数字。如果使用松散比较进行比较,则布尔值将转换为数字。这就是为什么''==false
是true
(5==true)是true@beginner,不知道你是什么意思?如果你在控制台中计算5==true
,你会得到false
。很抱歉我对PHP感兴趣,而在PHP中5==true
是true
试试echo(5==true)
你会得到1,我想,在javascript中它是一样的,但奇怪的是它是不同的,(我刚刚读了Felix Kling的评论),测试某事是否真实的最简单方法是!!val
。
0 == 1