Подтвердить что ты не робот

Самый сжатый способ присвоить значение переменной, только если она существует в CoffeeScript?

Кто-нибудь знает более краткий/элегантный способ достижения следующего?

A = B if B?

Спасибо.

EDIT:

Я ищу решение, которое ссылается только на A и B. И будет компилироваться в if (typeof B !== "undefined" && B !== null) { A = B; }
или что-то еще подобное.

Чтобы это короткое сообщение помогло сделать следующее более читаемым:
someObject[someAttribute] = (someOtherObject[someOtherAttribute] if someOtherObject[someOtherAttribute]?)
Это мотивация для моего вопроса.

4b9b3361

Ответ 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/)

Ответ 2

Может быть что-то вроде:

A=_ if (_=B)?

расширен:

if ((_ = B) != null) {
  A = _;
}

Это перезапишет A тем, что когда-либо находится в B, но только если оно не является нулевым, ссылаясь только на один раз.

Ответ 3

Не уверен о Coffee Script, но вы можете использовать оператор OR для этого в обычном javascript, например:

a = b || a