В PHP очень часто можно увидеть код, написанный следующим образом:
if($summary = get_post_summary())
{
    return $summary;
}
Я имею в виду назначение внутри условия . Как ни странно, это может быть сделано и в JavaScript, хотя это гораздо реже:
 if(summary = document.getElementById("post-summary"))
{
    return summary.innerHTML;
}
  На первый взгляд, вы будете прощены за то, что думаете, что это опечатка!  Действительно, некоторые отладчики будут отмечать это предупреждением, спрашивая, имели ли вы в виду проверку на равенство ( === 
Но это не ошибка — ключ к пониманию состоит в том, чтобы понять две вещи :
Сначала присваивание возвращает значение (значение, которое вы присвоили). Второе и самое важное, возвращаемое значение оценивается как истинное или ложное и в конечном итоге определяет, выполняется ли условие.
  Теперь, в мире оценки и обхода DOM , этот метод является безопасным и предсказуемым, потому что узлы DOM либо существуют, либо являются null—nullfalse .  Таким образом, в приведенном выше примере кода условие будет иметь значение true"#post-summary"false 
  Точно так же вы можете использовать тот же трюк, чтобы перебрать неизвестную иерархию, проходя через последовательных родителей с помощью while()  В этом примере создается массив каждого имени узла между целью события и #document 
 var names = [], node = e ? e.target : event.srcElement;
do
{
    names.push(node.nodeName);
}
while(node = node.parentNode)
Но в других местах JavaScript вы можете оказаться на гораздо менее надежной территории, потому что насколько истинным или ложным окажется множество значений, вовсе не интуитивно понятно.
  Например, положительные и отрицательные числа оцениваются как trueNaN .  И как ни странно, objectBooleanвсегда оценивается как truenew Boolean(false) 
Так что будьте осторожны! Такой синтаксис не для слабонервных; и при этом это не должно использоваться неосторожным способом, с чрезмерной уверенностью в преобразовании типов и приведении произвольных значений. Но при хорошем использовании в подходящих обстоятельствах он может упростить многие условия для создания более быстрого и экономичного кода.
Миниатюра кредит: sbwoodside