我只想知道(clickedNumber === 'Yes or No')
是否表示clickedNumber ='是或否',如果我想说clickedNumber不等于'是或否',那么它是这样的:< / p>
(clickedNumber !== 'Yes or No')
?
由于
答案 0 :(得分:10)
您引用的代码会检查变量clickedNumber
是否为strictly equal字符串"Yes or No"
。与此相反的是clickedNumber !== 'Yes or No'
,但了解您正在处理的内容非常重要。
如果clickedNumber
为'Yes'
,则clickedNumber === 'Yes or No'
为false,因为'Yes'
不严格(或松散)等于'Yes or No'
。严格的平等(===
)意味着:
操作数属于同一类型(这就是为什么它是“严格”而不是“松散”;“松散”等式允许转换,例如1 == "1"
)。
如果操作数属于同一类型,则它们具有相同的值。
当然'Yes or No'
和'Yes'
没有相同的值(执行具有相同的类型)。
如果您真的想要对'Yes or No'
进行检查,那么公平,但如果您的目标是单独检查'Yes'
或'No'
,则必须明确这样做:
if (checkedNumber === 'Yes' || checkedNumber === 'No') {
// checkedNubmer is 'Yes' **or** it's 'No'
}
......相反的是
if (checkedNumber !== 'Yes' && checkedNumber !== 'No') {
// checkedNubmer is neither 'Yes' **nor** 'No'
}
答案 1 :(得分:1)
如果我想说clickedNumber不等于'是或否',那么它是这样的:
(clickedNumber !== 'Yes or No')
你所说的是正确的,但它可能无法给出你期望的结果。
例如,您目前只检查字符串clickedNumber
是否等于字符串'Yes or No'
:
var clickedNumber = 'Yes or No';
if(clickedNumber === 'Yes or No')
{
alert("check 1"); // this will be triggered
}
if(clickedNumber !== 'Yes or No')
{
alert("check 2"); // this will *not* be triggered
}
if(clickedNumber === 'Yes')
{
alert("check 3"); // this will *not* be triggered
}
if(clickedNumber === 'No')
{
alert("check 4"); // this will *not* be triggered
}
它不使用该字符串的内容来定义任何布尔逻辑,因此单词or
实际上并没有做任何事情 - 它只是字符串的一部分:
var clickedNumber = 'Yes';
if(clickedNumber === 'Yes or No')
{
alert("check 1"); // this will *not* be triggered
}
if(clickedNumber !== 'Yes or No')
{
alert("check 2"); // this will be triggered
}
if(clickedNumber === 'Yes')
{
alert("check 3"); // this will be triggered
}
if(clickedNumber === 'No')
{
alert("check 4"); // this will *not* be triggered
}
如果你想要应用布尔逻辑,那么你必须在代码中而不是在字符串的内容中使用布尔运算符:
var clickedNumber = 'Yes';
if(clickedNumber === 'Yes' || clickedNumber === 'No')
{
alert("check 1"); // this will be triggered
}
if(clickedNumber !== 'Yes' && clickedNumber !== 'No')
{
alert("check 2"); // this will *not* be triggered
}
答案 2 :(得分:1)
是。你提到的代码:
(clickedNumber !== 'Yes or No')
如果true
不等于字符串clickedNumber
,则评估为'Yes or No'
。如果false
是字符串clickedNumber
,它将按'Yes or No'
评估。
请注意,这与测试它是否不等于两个单独的字符串'Yes'
或'No'
中的任何一个不同,您可以这样做:
!(clickedNumber === 'Yes' || clickedNumber === 'No')
进一步阅读:https://developer.mozilla.org/en/JavaScript/Reference/Operators/Comparison_Operators