Показать сообщение отдельно
  #6 (permalink)  
Старый 16.04.2013, 21:18
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от monolithed Посмотреть сообщение
@param {!Object} options

А что значит ! ?
JB это пропускает.
В синтаксисе GCC JSDoc - это означает, что значение не может быть null, а указал я потому, что в GCC все объекты (кроме функций-колбеков) по умолчанию могут быть null и строчка
var trololo = options.trololo || [];
содержит потенциальную ошибку, т.к.
null.trololo
вызовет эксепшин.

Напротив, знак ? обозначает, что значение может быть null (для объектов можно не писать, т.к. они могут быть такими по умолчанию) и применяется как правило к элементарным типам: string, number и boolean (кстати следует заметить, что в GCC string != String и т.д. String означает явное создание объекта, а string использование примитива).

Кстати вебшторм понимает спецефичные GCC штуки, вроде ? ! и =

Цитата:
/** @param {Object | Array} options */
С точки зрения GCC эта конструкция ошибочна, т.к. обязательно нужно указывать круглые скобки при множественном типе данных:
/** @param {(Object | Array)} options */


А нужно это для того, что можно писать так:
/** @param {(Object | Array)=} options */

/** @param {Object=} options */ // Объект, может быть null и undefined

Знак = означает, что параметр опциональный.

Цитата:
и зачем они вообще тогда нужны?
Для GCC неймспейсы не нужны, они используются как пометки для докогенераторов и людей.

/** @namespace */
var URL = {
  getParam: function (){},
  ...
}
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 16.04.2013 в 21:26.
Ответить с цитированием