我显然在这里遇到了一些非常错误,所以我会感激任何好的建议。 为什么如果我写
var x='';
var y="12345";
(y.substring(0, 3) === "000"||"999") ? x=1: x=0;
console.log (x, y.substring(0, 3));
答案是1 "123"
而不是0 "123"
?
谢谢你们!
答案 0 :(得分:3)
首先,三元运算符语法不是您正常使用它的方式,您必须进行两次比较而不是一次。
var str = y.substring(0, 3);
x = (str === "000"|| str === "999") ? 1 : 0;
MDN
对于condition ? expr1 : expr2
如果condition为true,则运算符返回expr1的值; 否则,它返回expr2的值。
答案 1 :(得分:2)
或者操作符的工作方式如下:a || b
如果每个陈述彼此隔离,基本上你可以让我更加明显:
var c1 = y.substring(0, 3) === "000";
var c2 = "999";
if ( c1 || c2 ) { x = 1; } else { x = 0; };
在这里查看问题?
我会重写你的陈述,如下所示:
x = ["000", "999"].indexOf(y.slice(0, 3)) > -1 ? 1 : 0;
请注意我如何使用Array.prototype.indexOf
来测试多重案例:
["000", "999"].indexOf(y.slice(0, 3)) // returns the index of the array or -1 if not in the array.