Я работаю над сценарием, который принимает объект settings
, но использует значения по умолчанию, где настройки не предоставлены.
Я только что написал следующую строку CoffeeScript:
iframe_width = settings?.iframe?.width? ? $iframe_body.width()
Моим намерением на простом английском языке является:
Если определен объект settings
, и он определяет свойство iframe
, а свойство iframe
определяет свойство width
, затем присвойте значение последнего свойства переменной iframe_width
.В противном случае присвойте возвращаемое значение, вызвав $iframe_body.width()
.
Отражает ли мой код CoffeeScript мои намерения и является ли это наиболее эффективным способом выразить это?Это кажется неудобным со всеми экзистенциальными операторами (?
), поэтому я хотел высказать это для некоторой обратной связи (скомпилированный JavaScript очень лаконичен и загадочен, поэтому трудно сказать, должен ли он работать как задумано).
Кроме того, я не уверен, есть ли какая-либо избыточность в использовании как стандартного экзистенциального оператора (?
), так и его варианта доступа (?.
) вместе.
Спасибо!
Обновление:
Код, приведенный выше, не работает должным образом;однако, это так:
iframe_width = settings?.iframe?.width ? $iframe_body.width()
Это имеет смысл, поскольку я не думаю, что предыдущий код фактически обращается к свойству width
, а просто проверяет его существование (дважды, даже?).В этом коде я удалил ?
сразу после свойства width
, так как я считаю, что это избыточно с оператором ?
между двумя выражениями.Это кажется правильным?