写if else语句的更好方法

时间:2015-03-30 03:45:05

标签: javascript if-statement

第一次写Javascript。我只想知道是否有更短的写作方式:

<p id="demo"></p>

<script>
    function myFunction() {
    var letter = document.getElementById("myInput").value;
    var text;

    if (letter === "5544") {
        text = "Abar, Marlon 1,800";

    } else if (letter === "5545") {
        text = "Pia, Darla 1,800";  

    } else if (letter === "5546") {
        text = "Salazar, Alex 1,500";   

//etc...

    } else {
        text = "Incorrect Account Number";
    }
document.getElementById("demo").innerHTML = text;
}
</script>

试过地图,但我无法让它发挥作用。

3 个答案:

答案 0 :(得分:5)

以这种方式编写if语句并没有更短的方法(我将假设你正在问的问题)。但是,根据您要检查的内容,可能会有几种不同的方式来编写它。

使用Switch语句

在处理letter可能存在的多个案例时,有一种更清洁的方式。

这将是一个switch语句,它看起来像这样:

var text;

switch (letter) {
    case "5544":
        text = "Abar, Marlon 1,800";
    break;
    case "5545":
        text = "Pia, Darla 1,800"; 
    break;

    // more cases

    default:
        text = "Incorrect Account Number";
    break;
}

在某些情况下,这比if else语句略好一些。此处的default关键字充当else语句中的if else子句。如果您愿意,case会充当您不同的if语句。

基本上,上面的switch语句将落在它定义的每个案例中,直到找到与letter匹配的案例(例如"5544")。如果没有匹配,则会遇到default案例。一旦找到匹配项,每个break末尾的case关键字就会阻止事件进入下一个定义的case

这种方法可能会因超过6或7例而变得麻烦。

创建一个对象并查找值

现在,获取所需值的更短方式可以是定义一个对象,并根据输入的内容获取值,如下所示:

var letter = document.getElementById('selector').value;
var obj = {
    '5544': 'Abar, Marlon 1,800'
};

if (letter in obj) {
   // do something if found
}
else {
   // do something if not found
}

如果要检查多个值,这可能是获取值的简单方法。

其他想法

作为所有这些的旁注,有一些称为三元语句的简短if语句,你可以在这里找到:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator ...但是,我不建议将它们嵌套,因为它变成了非常复杂,不太可读。

结论

所以,重申一下你的问题的答案:不,写一个带有很多值的if else语句并不是一个更短的方法。您可以使用switch语句使其更清晰。如果您要检查多个值,请使用对象查找方法。

答案 1 :(得分:0)

JavaScript具有对象(map)文字。将它们用于简洁代码。在您的最终应用程序中,您将从其他地方获取地图数据,而不是将其直接编入您的网站,但如果您这样做,它将如下所示:

document.getElementById( "demo" ).innerHTML = {
    "5544" : "Abar, Marlon 1,800",
    "5445" : "Pia, Darla 1,800",
    ...
}[ document.getElementById( "myInput" ).value ];

答案 2 :(得分:-1)

你可以使用switch for if - else -if ladder:

switch(expression) {
case n:
    code block
    break;
case n:
    code block
    break;
default:
    default code block
}

这是它的工作原理:
1)切换表达式被评估一次 2)将表达式的值与每个案例的值进行比较 3)如果匹配,则执行相关的代码块。

如果您需要java脚本中的基础教程,那么您应该尝试w3学校。