Подтвердить что ты не робот

Почему javascript принимает запятые в операторах if?

Я наткнулся на какой-то синтаксис javascript, который, похоже, должен вызвать ошибку синтаксического анализа, но не делает:

if (true, true) {console.log('splendid')} else {console.log('horrid')} // splendid
if (true, false) {console.log('splendid')} else {console.log('horrid')} // horrid

Кажется, что только последнее выражение влияет на логику, хотя все выражения выполняются:

if  (console.log('super'), true) {console.log('splendid')} // super splendid

Кто-нибудь знает, почему это действительный синтаксис javascript? Есть ли практическое применение для этого?

4b9b3361

Ответ 1

Оператор запятой объединяет несколько выражений вместе, а результатом операции является значение последнего операнда. Единственное реальное использование для него - это когда вам нужно несколько побочных эффектов, таких как назначение или вызовы функций.

Ответ 3

запятые в javascript на самом деле довольно загадочны. Самое крутое использование, которое я видел, это

while(doSomething(), checkIfSomethingHappened());

наиболее распространенным было бы использование var в современных js

var foo = 1,
    bar = 2;

Ответ 4

Это также то же самое, что и в большинстве других языков программирования, где у вас может быть несколько итераторов в цикле.

int x,y;
for(x = 0, y = 0; x < 10 || y < 100; x++, y++) {
....
}