Это возможно сделать это, да, через оператор запятой:
options1.style.backgroundColor = options1.value == "correct" ? (score++, 'lightGreen') : 'pink';
Оператор запятой довольно необычен: он вычисляет свой левый операнд, затем его правый операнд, и в результате получает значение, полученное из его правого операнда. Таким образом, вы можете использовать левый операнд для побочных эффектов.
Я не рекомендую, но это возможно.
Вместо этого, вместо того, чтобы повторяться и писать трудный в обслуживании код с помощью оператора запятой, возможно, создайте многократно используемую, понятную, легкую для чтения функцию:
function handleOption(option) {
if (option.value === 'correct') {
option.style.backgroundColor = 'lightGreen';
return 1;
} else {
options.style.backgroundColor = 'pink';
return 0;
}
}
или аналогичный. Тогда checkAnswers
может быть:
function checkAnswers() {
let score = handleOption(option1) +
handleOption(option2) +
handleOption(option3);
alert(`your score is ${score}`)
}
или даже:
function checkAnswers() {
let score = [option1, option2, option3].reduce(
(score, option) => score + handleOption(option),
0
);
alert(`your score is ${score}`)
}