我的 IF 语句不正确吗?

Are my IF statements incorrect?

本文关键字:不正确 语句 IF 我的      更新时间:2023-09-26

>我有以下内容:

var detail = 'two';
function chkDetail(detail){
    if(detail == 'one') {
        jQuery('#valMsg').text('one');
    }
    if(detail == 'two') {
        jQuery('#valMsg').text('two');
    }
    if(detail == 'three') {
        jQuery('#valMsg').text('three');
    }
    else {
        jQuery('#valMsg').text('NO');
    } 
}

根据传递给我的函数的字符串,我希望将适当的消息传递到我的div valMsg

在上述情况下,我的函数不断返回NO

谁能告诉我这是为什么?

if陈述不正确吗?

应该在所有语句上添加else

function chkDetail(detail){
    if(detail == 'one') {
        jQuery('#valMsg').text('one');
    }
    else if(detail == 'two') {
        jQuery('#valMsg').text('two');
    }
    else if(detail == 'three') {
        jQuery('#valMsg').text('three');
    }
    else {
        jQuery('#valMsg').text('NO');
    } 
}

你已经分离了条件。 我将添加间距来说明:

// first condition
if(detail == 'one') {
    jQuery('#valMsg').text('one');
}
// second condition
if(detail == 'two') {
    jQuery('#valMsg').text('two');
}
// third condition
if(detail == 'three') {
    jQuery('#valMsg').text('three');
}
else {
    jQuery('#valMsg').text('NO');
}

因此,例如,如果detail是"一",那么:

  • 第一个条件进入if
  • 第二个条件不进入if
  • 第三个条件不进入if块,进入else块(因为elseif的逻辑逆)

如果它们都应该是相同的条件,请使用else if块:

// all one condition
if(detail == 'one') {
    jQuery('#valMsg').text('one');
}
else if(detail == 'two') {
    jQuery('#valMsg').text('two');
}
else if(detail == 'three') {
    jQuery('#valMsg').text('three');
}
else {
    jQuery('#valMsg').text('NO');
}

这样,一旦输入一个块,其余块就会被跳过,因为整个条件已经满足。

else仅指前if,而不是所有if语句。

此处提供的答案不检查数据类型,这对于检查可能至关重要。

var int1 = 1
var string1 = '1'

if(string1 == int1)会返回 true,但它们实际上并不相同。

我会使用看起来更好的代码并且还检查数据类型的 switch 语句。

var detail = 'two';
function chkDetail(detail){
switch(detail){
case 'one' : jQuery('#valMsg').text('one'),
case 'two' : jQuery('#valMsg').text('two'),
default :  jQuery('#valMsg').text('No')
}

如果你想走多重if语句的路线,那么请使用===运算符来确保也对数据类型进行检查。这将防止许多粗略的行为和错误。

    if(detail === 'one') {
        jQuery('#valMsg').text('one');
    }
    if(detail === 'two') {
        jQuery('#valMsg').text('two');
    }
    if(detail === 'three') {
        jQuery('#valMsg').text('three');
    }
    else {
        jQuery('#valMsg').text('NO');
    } 
}

看看这个和这个以获取更多信息。