该if语句可以是切换语句吗?更漂亮或更简单?

时间:2018-08-23 16:41:55

标签: javascript jquery if-statement switch-statement refactoring

此if语句可以是切换语句,更漂亮或更简单吗?

items = function () {
    n = $(item).length;

    if (n % 4 == 3){
        $(foo).addClass(small);
    } else if (n % 4 == 2){
        $(foo).addClass(medium);
    } else if (n % 4 == 1){
        $(foo).addClass(large);
    } else if (n % 4 == 0){
        $(foo).addClass(xlarge);
    } 
};

2 个答案:

答案 0 :(得分:2)

由于n % 4的结果为0123,因此您可以使用一系列数组,其中每个类索引对应一个以前的结果:

items = function () {
    n = $(item).length;

    $(foo).addClass([xlarge, large, medium, small][n % 4]);  
};

您看到,根据n % 4的值,将选择数组[xlarge, large, medium, small]的一项,例如,如果n % 42,则{{1} }将被选中并传递给medium

答案 1 :(得分:-1)

例如https://www.w3schools.com/js/js_switch.asp中的示例吗?

switch (new Date().getDay()) {
    case 0:
        day = "Sunday";
        break;
    case 1:
        day = "Monday";
        break;
    case 2:
        day = "Tuesday";
        break;
    }

switch语句中的表达式为n%4,且条件相同的情况,即3、2、1、0。您放置了addClass语句,而不是day =“ Sunday”等。

请记住,切换案例确实使用严格的比较,即不是“ ==”而是“ ===”。因此,确切地说,您不能在不更改逻辑的情况下使用switch语句进行重构。

我说switch语句会更合适,因为else if语句中的条件都相同,只是为了测试不同的值。

相关问题