2012-01-08 53 views
2

我只是想知道,如果(clickedNumber === 'Yes or No')意味着如果clickedNumber =“是或否”,那么如果我想说的clickedNumber不等于“是或否”,则是这样的:此代码是否意味着'不等于'?

(clickedNumber !== 'Yes or No')

感谢

+0

那不检查是否'clickedNumber!=='是'|| clickedNumber!=='不'。它只是检查变量'clickedNumber'是否不**字面意思相同'Yes或No'。 – 2012-01-08 23:52:16

+0

您是否检查字符串是否等于“是或否”字符串,或者它是否等于*“是”或“否”? – 2012-01-08 23:53:18

+0

那么问题是我看不出差异,因为我的代码中发生了一个事故。 (很长的故事)。所以我不能测试它,所以我想知道这是如何完成的 – BruceyBandit 2012-01-08 23:53:57

回答

10

你引述检查是否变量clickedNumberstrictly equal字符串"Yes or No"的代码。与之相反的是clickedNumber !== 'Yes or No',但了解你所处理的内容很重要。

如果clickedNumber'Yes',然后clickedNumber === 'Yes or No'是假的,因为'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

如果我想说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 
} 
1

是的。你提到的代码:

(clickedNumber !== 'Yes or No') 

将评估作为true如果clickedNumber不等于字符串'Yes or No'。如果clickedNumber是字符串'Yes or No',它将被评为false

注意,这是不一样的测试是否不等于到两个独立的串'Yes''No',你会做这样的:

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

延伸阅读:https://developer.mozilla.org/en/JavaScript/Reference/Operators/Comparison_Operators

相关问题