我無法弄清楚爲什麼我不能在三元操作中使用我的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