alert(1) || alert(2) && alert(3)
function myalert(value) {
alert(value);
return value;
}
myalert(1) + myalert(2) * myalert(3)
alert(value)
возвращает undefined
myalert(value)
возвращает value
A || B && C
разбирается как A || (B && C)
A
. Если оно приводится к false
, требуется проверить второй аргумент ||
, т.е. (B && C)
B
. Если оно приводится к false
, то проверять C
уже не нужно. undefined || undefined && 'до этого места проверка не доходит'
undefined || 'что угодно' // 'что угодно'
undefined && 'что угодно' // undefined