有没有更好的方法在javascript if'语句中'什么都不做'?

时间:2017-02-22 16:38:30

标签: javascript

我的网址看起来像这样= https://studentscafe.com/menu/2

我正在尝试检查它是否有2个不同的网址参数...

1。)?dinner=1

2。)&dinner=1

如果存在#1,则不执行任何操作

如果存在#2,则不执行任何操作

但如果两者都不存在,则默认将?dinner=1添加到网址。

有没有更好的方法让默认值在if语句中什么都不做?例如Fiddle here

var path = 'https://studentscafe.com/menu/2';

if (path.indexOf('?dinner=1') >= 1) {
    console.log('has ?');
    // do nothing leave url as it is

} else {
    console.log('does not have ?');
    if (path.indexOf('&dinner=1') >= 1) {
        // do nothing leave url as it is
    } else {
        path = path + '?dinner=1';
    }
}

预期输出:如果网址没有#1或#2:https://studentscafe.com/menu/2?dinner=1

2 个答案:

答案 0 :(得分:5)

而不是

if (something) {
    // do nothing 
} else {
    // do what you need
}

您可以使用

if (!something) {
    // do what you need
}

在你的情况下:

if (path.indexOf('?dinner=1') == -1 && path.indexOf('&dinner=1') == -1) {
    path = path + '?dinner=1';
}

答案 1 :(得分:0)

在现代 JS 中,你可能只是喜欢

['?dinner=1','?dinner=2'].every(s => !path.includes(s)) && (path += '?dinner=1');