Здесь происходит несколько вещей.Постараюсь объяснить каждый из них.
Во-первых, в строке ниже у вас есть несколько выражений, разделенных запятой.В JS каждое выражение оценивается слева направо, и возвращается последнее выражение.Таким образом, в основном это будет работать следующим образом:
if(a = 'A|B|C'.split('|'), a.length > 1){ // evaluate 'A|B|C'.split('|') and assign the value to a variable 'a' if it exists. Otherwise create a new global variable 'a' and assign the value.
преобразуется в
if(a,a.length > 1) // a gets assigned a value which
// here is an array consisting of 3 elements.["A","B","C"].
преобразуется в
if(["A","B","C"], ["A","B","C"].length > 1)
преобразуется в
if(true) // comma separated expression always
// returns the last expression's value which here would be true since a.length is 3
Следовательно, вы всегда получите код блока if.
Вторая проблема, о которой вы упомянули, заключается в том, что вы не можете писать операторы внутри блока if.и использование var / let - это в основном утверждение.Помните, что вы можете писать выражения внутри, если условие.