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

有没有更好的方法来';什么也不做';在javascript if语句中?,javascript,Javascript,我的url看起来像这样=https://studentscafe.com/menu/2 我正在检查它是否有两个不同的url参数 1.?晚餐=1 或 2.晚餐=1 如果有1,什么也不做 如果有#2,什么也不做 但如果两者都不存在,则默认为将?dinner=1添加到url 有没有更好的方法让默认值在if语句中不执行任何操作?比如说 var path = 'https://studentscafe.com/menu/2'; if (path.indexOf('?dinner=1') >= 1)

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

我正在检查它是否有两个不同的url参数

1.
?晚餐=1

2.
晚餐=1

如果有1,什么也不做

如果有#2,什么也不做

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

有没有更好的方法让默认值在if语句中不执行任何操作?比如说

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';
    }
}
预期输出:如果url没有#1或#2:
https://studentscafe.com/menu/2?dinner=1

而不是

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';
}
你可以这样做

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

// Since there is no change to path if it contains either ?dinner=1 or &dinner=1

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

} else {
   path = path + '?dinner=1';
}
使用a和
否定运算符,这可能非常简单:

var路径='1〕https://studentscafe.com/menu/2';
如果(!/[?&]晚餐=1/.test(路径)){
路径+='?晚餐=1';
}

console.log(路径)在现代JS中,您只需

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

与其什么也不做,不如否定条件并丢失
else
块:
if(path.indexOf('?dinner=1')<1){…}
-如果在第一个位置(索引0)找到子字符串,
indexOf
可以返回
0
,因此,
>=1
应该是
=0
。如果这是对我的评论的回应,最好使用,我建议的
=0
的否定将是
<0
,这与