1

我的脚本中有这段代码

var therow;
var rowtitle = ['Name', 'Weight'];
for(var i=0;i<7;i++) {
    therow = prompt(rowtitle[i]);
    if(therow != '' || therow != null) {
           //some code
    } else {
          //more code
    }
therow = null;
}

循环工作正常,提示也有效。问题是

if(therow != '' || therow != null)

我知道这一点,因为我尝试过

if(therow != '')

if(therow != null)

...独立,并且它们的行为符合预期。

为什么当我将上述两者结合在一个 if 语句中时,它什么也不做?

上面的代码有问题吗?

4

4 回答 4

3

我会使用 &&。您希望它不为空且不为空,对吗?

于 2013-08-23T11:57:31.110 回答
3

因为它永远都是真的。

你说过if it's not a blank string OR it's not NULL。当它为 NULL 时,它不是一个空白字符串(所以它是真的)。当它是一个空白字符串时,它不是 NULL(所以它是真的)。

你想要的是if (therow != '' && therow != null)或更有可能if (therow)。我也见过if (!!therow),这迫使它变成一个实际的布尔值。

于 2013-08-23T11:59:37.593 回答
1

尝试使用这个:

if (!!therow){
           //some code
    } else {
          //more code
    }

这是更短的方式

于 2013-08-23T12:06:23.663 回答
0

使用DeMorgans 定理转换therow != '' || therow != nulltherow == '' && therow == null并研究转换。怎么可能therow''同时null

于 2013-08-23T12:06:32.550 回答