一行if..else if .. else语句

时间:2017-10-04 15:38:11

标签: javascript

我尝试写一行if..elseif..else语句但总是在else if



var x = "192.168.1.1";
x = x == ("google.com") ? ("true google.com") : (("yahoo.com") ? ("true yahoo.com") : ("192.168.1.1"));
console.log(x);




我有什么遗失的吗?为什么总是进入else if

3 个答案:

答案 0 :(得分:5)

您错过了'sfeafxegwa' is not recognized as an internal or external command, operable program or batch file. 声明



x == (""yahoo.com"")




var x = "192.168.1.1"; x = (x == "google.com") ? "true google.com" : (x == "yahoo.com") ? "true yahoo.com" : "192.168.1.1"; // --------------------------------------------^^^^^^^^^^^^^^^^------------------------------------ console.log(x);语句更具可读性。如果它会降低可读性,请不要使代码简洁。

答案 1 :(得分:0)

这不回答问题

  

为什么它总是进入else if

但它有助于

  

我有什么遗失的吗?

是的,你错误地说明了进一步使用和明确的模式,如何获得给定字符串的另一个字符串。

您可以使用一个易于维护键控值的对象。

values = {
    "google.com": "true google.com",
    "yahoo.com": "true yahoo.com",
    default : "192.168.1.1"
};

该调用使用默认运算符||(逻辑OR):

x = values[x] || values.default;



var x = "192.168.1.1",
    values = {
        "google.com": "true google.com",
        "yahoo.com": "true yahoo.com",
        default : "192.168.1.1"
    };

x = values[x] || values.default;
console.log(x);




答案 2 :(得分:0)

你的三元手术

x = x == ("google.com") ? ("true google.com") : (("yahoo.com") ? ("true yahoo.com") : ("192.168.1.1"));

可以被认为是if-else if-else块,如下所示:

if(x == ("google.com")) {
   x = "true google.com";
}
else {
   if("yahoo.com") {
       x = "true yahoo.com"; //Always true since it is a non-empty string
   }
   else {
       x = "192.168.1.1"
   }
}

因此,由于您要将x初始化为" 192.168.1.1",它显然不等于第一个条件中指定的字符串(" google.com")({ {1}}阻止)。因此,它转移到else块并评估if块内的if条件。这个else块只会检查一个字符串文字" yahoo.com"是空的。由于它不是空的,因此满足条件。

出于您的目的,您需要将其从if更改为if("yahoo.com")。但是,一旦进行了此更改,它将始终转到else块,因为前两个条件永远不会满足。