Приколы в очереди про 'foo' + + 'foo'.
A ||B в javascript действительно означает «Если A правдиво, передайте A. В противном случае передайте B».И типы вне окна, Javascript будет пытаться объединить ошибки.Последний ключ в системе - странный порядок действий.
displayName || firstName + " " + lastName || defaultName
(displayName || firstName) + ((" " + lastName) || defaultName)
( undefined ) + (" undefined" || defaultName)
undefined + " undefined"
"undefined undefined"
Если вы хотите сделать это правильно, у вас есть куча хороших альтернативных вариантов.Я бы сказал что-то вроде
function forceGoodString(input) {
if (typeof input === "string" && input.length) {
return input;
} else {
return "";
}
}
... Я не совсем уверен, что вы ожидаете с тремя неопределенными переменными, «NIL» или просто «NIL»?В любом случае вам нужно еще несколько строк.Ничего плохого в удобочитаемости, не все должно быть причудливым ${garbage}
и тройным вкладышем.
if (displayName) {
console.log(displayName);
} else if (firstName && lastName) {
console.log(firstName + " " + lastName);
} else {
console.log(defaultName);
}
И если вам когда-нибудь надоест свободные типы в JS, вы всегда можете научиться идти!