Javascript或运算符无法正常工作

时间:2011-03-17 21:04:24

标签: javascript sharepoint compare

var strExt  = GetAttributeFromItemTable(itemTable, "Ext", "FileType");

我对strExt发出警报并解析。     if(strExt!='wav')     {      //这个有效     }

if (strExt!='wav' || strExt!='mp3')
{
// this does not work.
}

6 个答案:

答案 0 :(得分:12)

你的逻辑存在缺陷:

如果您的变量strExt等于'wav',则 等于'mp3',反之亦然。

请更清楚地解释您想要的结果。

我认为你想说的是('wav' 'mp3'):

if ( !( strExt == 'wav' || strExt == 'mp3' ) )

在逻辑上等同于(不是'wav' 而不是 'mp3'):

if ( strExt != 'wav' && strExt != 'mp3' ) )

答案 1 :(得分:1)

我希望第二个表达式的结果为True而不管字符串strExt的值(任何扩展名不等于“wav”或不等于“mp3”) 。你能指望什么?

你确定你不是指一个布尔AND而不是一个OR(“扩展既不是'wav'也不是'mp3'”)?

答案 2 :(得分:1)

||说:如果任何条件成立,我会返回true,而不会看到之后的那些。

所以true || false为真,falls || true为真。

在你的情况下,你说“如果strExt不等于wav并且不等于mp3,则执行”。如果其中一个为真,则执行。

我在想你正在寻找&&符号。 logical and说“只有当每个条件都为真时我才会返回true” - 当它遇到假时,它会返回false。

我认为您的代码应该是这样的:

if (strExt!='wav' && strExt!='mp3')

答案 3 :(得分:0)

这背后的逻辑没有任何意义,你不想这样做:

if ((strExt !== "wav") && strExt !== "mp3") {

}
在这种情况下,

而不是OR更有意义。

答案 4 :(得分:0)

如果您想进入第二个if,当strExt不等于'wav''mp3'时,您需要使用&&运算符。

if (strExt!='wav' || strExt!='mp3')

strExt='wav' => strExt!='wav' = false; strExt!='mp3' = true => false或true = true并进入if语句,strExt='mp3'时的情况类似。

答案 5 :(得分:0)

只需添加另一个括号,如下所示:

if ((strExt!='wav') || (strExt!='mp3'))
 {
     // this does not work.
 }