我无法弄清楚为什么我不能在三元操作中使用我的for循环。这里要说的是不工作的代码:Javascript三元w/for循环错误; “Uncaught SyntaxError:意外的令牌”
this.ask = function() {
m = (isVoice) ? 'voice' : 'text';
switch (true) {
case m == 'voice' && typeof questions[timer.question].voice == 'string':
(++timer.attempts > timer.maxAttempts) ?
console.log('Stop'):
console.log('Play file (' + timer.attempts + '): ' + questions[timer.question].voice);
break;
case m == 'voice' && typeof questions[timer.question].voice == 'object':
(++timer.attempts > timer.maxAttempts) ?
console.log('Stop'):
for (i = 0; i < questions[timer.question].voice.length; i++) {
console.log(questions[timer.question].voice[i])
};
break;
default:
(++timer.attempts > timer.maxAttempts) ?
console.log('Stop'):
console.log('Say Text (' + timer.attempts + '): ' + questions[timer.question].text);
break;
}
};
具体的的情况下,其中m ==“声音”和typeof运算==“对象”引发错误“未捕获的SyntaxError:用于意外标记”。如果我将该情况更改为:
case m == 'voice' && typeof questions[timer.question].voice == 'object':
console.log('Audio, Array.');
if (++timer.attempts > timer.maxAttempts) {
console.log('Stop');
}
else {
for (i in questions[timer.question].voice) {
console.log(questions[timer.question].voice[i]);
}
}
break;
...然后一切按预期工作。
这是为什么?
在您需要使用返回一些值,循环不会返回任何表情三元。 – sergioFC
三元运算符可以非常方便,但它也为无法读取的意大利面代码留下了空洞。在我的愚见中,这是其中的一例。我不会推荐以这种方式编写代码。使用'if'。 – Timeout
我和许多人指出的一样......简单的if/else语句以获得更简洁的代码。谢谢大家的意见。谢谢Pointy解释问题所在。 – cw84