Javascript 此代码是否表示';不等于';?

Javascript 此代码是否表示';不等于';?,javascript,Javascript,我只想知道,(clickedNumber==='Yes或No')是否意味着如果clickedNumber='Yes或No',那么如果我想说clickedNumber不等于'Yes或No',那么是这样的: !(clickedNumber === 'Yes' || clickedNumber === 'No') (单击数字!=“是或否”) 谢谢您引用的代码将检查变量clickedNumber是否与字符串“是或否”对应。与此相反的是clickedNumber!='“是或否”,但重要的是要了解你在处理

我只想知道,
(clickedNumber==='Yes或No')
是否意味着如果clickedNumber='Yes或No',那么如果我想说clickedNumber不等于'Yes或No',那么是这样的:

!(clickedNumber === 'Yes' || clickedNumber === 'No')
(单击数字!=“是或否”)


谢谢

您引用的代码将检查变量
clickedNumber
是否与字符串
“是或否”
对应。与此相反的是
clickedNumber!='“是或否”
,但重要的是要了解你在处理什么

如果
clickedNumber
'Yes'
,则
clickedNumber==='Yes或No'
为假,因为
'Yes'
并不严格(或松散地)等于
'Yes或No'
。严格相等(
==
)意味着:

  • 操作数的类型相同(这就是为什么它是“严格的”而不是“松散的”;“松散的”相等允许强制转换,例如
    1==“1”

  • 如果操作数的类型相同,则它们的值相同

自然地,
“是或否”
“是”
没有相同的值(它们有相同的类型)

如果你真的想对照
的“是”或“否”
,这很公平,但如果你的目标是单独对照
的“是”或
的“否”
,你必须明确:

if (checkedNumber === 'Yes' || checkedNumber === 'No') {
    // checkedNubmer is 'Yes' **or** it's 'No'
}
…与之相反的是

if (checkedNumber !== 'Yes' && checkedNumber !== 'No') {
    // checkedNubmer is neither 'Yes' **nor** 'No'
}
如果我想说clickedNumber不等于“是或否”,那么是这样的:

!(clickedNumber === 'Yes' || clickedNumber === 'No')
(单击数字!=“是或否”)

你所说的是正确的,但它可能不会给出你期望的结果

例如,您当前拥有的只是检查字符串
clickedNumber
是否等于字符串
“是或否”

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
}
它不使用该字符串的内容来定义任何布尔逻辑,因此单词
实际上没有任何作用-它只是字符串的一部分:

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
}
如果要应用布尔逻辑,则必须在代码中使用布尔运算符,而不是在字符串内容中使用:

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
}

对。您提到的代码:

(clickedNumber !== 'Yes or No')
如果
clickedNumber
不等于字符串
“是或否”
,则将计算为
true
。如果
clickedNumber
是字符串
“是或否”
,则它将评估为
false

请注意,这与测试它是否不等于两个单独字符串
'Yes'
'No'
中的任何一个不同,您可以这样做:

!(clickedNumber === 'Yes' || clickedNumber === 'No')

进一步阅读:

这不会检查两个
是否都单击了数字!='是“| |单击编号!==”否“
。它只是检查变量
clickedNumber
是否确实等于
Yes或No
。您是在检查字符串是否等于
'Yes或No'
字符串,还是等于
'Yes'
'No'
?问题是,因为我的代码出了问题,所以我看不到它们之间的区别。(说来话长)。所以我无法测试它,所以我想知道这是否是一个字符串中的doneYes和No,我不检查两者。如果您检查字符串值是否等于
是或否,那么是的,您是对的(在这种情况下,不确定
!=
是否不相同,因为在这种情况下,类型检查没有问题)。