这段代码是否意味着“不平等”?

时间:2012-01-08 23:49:21

标签: javascript

我只想知道(clickedNumber === 'Yes or No')是否表示clickedNumber ='是或否',如果我想说clickedNumber不等于'是或否',那么它是这样的:< / p>

(clickedNumber !== 'Yes or No')

由于

3 个答案:

答案 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