JavaScript是否提供语法糖以将变量同时与一组文字和变量进行比较?针对多个文字或变量测试变量值
这是乏味写if (x !== foo || x !== bar)
,我想有分拣机版本一样if (<< x !== foo || bar >>)
我知道我可以使用,但我正在寻找的东西内联和更简洁的switch语句
JavaScript是否提供语法糖以将变量同时与一组文字和变量进行比较?针对多个文字或变量测试变量值
这是乏味写if (x !== foo || x !== bar)
,我想有分拣机版本一样if (<< x !== foo || bar >>)
我知道我可以使用,但我正在寻找的东西内联和更简洁的switch语句
你可以这样做这样的:
if ([foo, bar].indexOf(x) === -1) {
....
}
你可以在ES6语法创建自己的比较功能,在这里:
function isNot(v, ...a) {
return a.indexOf(v) == -1;
}
var x, foo = 123, bar = 456;
x = 456;
console.log(isNot(x, foo, bar));
x = 789;
console.log(isNot(x, foo, bar));
或者你甚至可以创建新的原型方法。例如,对于编号:
Number.prototype.notIn = function(...a) {
return a.indexOf(this.valueOf()) == -1;
}
var x, foo = 123, bar = 456;
x = 456;
console.log(x.notIn(foo, bar));
x = 789;
console.log(x.notIn(foo, bar));
NB:您可能需要使用for
循环迭代上arguments
的浏览器不支持ES6。
如果你使用ES6('Array.from'),你可以使用'function isNot v,... a){' – loganfsmyth
@loganfsmyth - 非常真实!回答相应更新。谢谢! – Arnauld
除非'x == foo == bar',这个条件总是如此。你是不是指'(x!== foo && x!== bar)'? – Arnauld
为什么说明显而不是回答这个问题?我想在x不是的情况下返回。这只是一个占位符条件 –
如果'糖'是为了让事情看起来更好,我认为没有更好的办法。如果它的字符数最少,那更多的是codegolf.stackexchange.com问题,所以让游戏开始...... – James