Ответ 1
Можно сказать:
a = b ? a
Например, это:
a = 11
a = b ? a
console.log(a)
b = 23
a = b ? a
console.log(a)
предоставит вам 11
и 23
в консоли (demo: http://jsfiddle.net/ambiguous/ngtEE/)
Кто-нибудь знает более краткий/элегантный способ достижения следующего?
A = B if B?
Спасибо.
Я ищу решение, которое ссылается только на A и B. И будет компилироваться в
if (typeof B !== "undefined" && B !== null) { A = B; }
или что-то еще подобное.
Чтобы это короткое сообщение помогло сделать следующее более читаемым: someObject[someAttribute] = (someOtherObject[someOtherAttribute] if someOtherObject[someOtherAttribute]?)
Это мотивация для моего вопроса.
Можно сказать:
a = b ? a
Например, это:
a = 11
a = b ? a
console.log(a)
b = 23
a = b ? a
console.log(a)
предоставит вам 11
и 23
в консоли (demo: http://jsfiddle.net/ambiguous/ngtEE/)
Может быть что-то вроде:
A=_ if (_=B)?
расширен:
if ((_ = B) != null) {
A = _;
}
Это перезапишет A тем, что когда-либо находится в B, но только если оно не является нулевым, ссылаясь только на один раз.
Не уверен о Coffee Script, но вы можете использовать оператор OR для этого в обычном javascript, например:
a = b || a