Это , а не , преобразующее пустую строку в Boolean
.
С ||
Он оценивает левую часть, пустой строкой которой является falsy . Затем он проверяет правую часть (потому что это или , а эта сторона может быть истинной) и возвращает это значение.
С &&
Поскольку &&
необходимо, чтобы обе стороны были true , а левая сторона falsy , проверка правой стороны не беспокоит ( оценка короткого замыкания *) ). Поэтому он просто возвращает левую часть, которая является пустой строкой.
JavaScript всегда возвращает последнее значение, которое он оценил.
>>> '' || 0 || undefined || null || false || NaN || 'hello'
"hello"