Вы не можете документировать вложенные функции напрямую. Но вы можете сделать что-то вроде этого:
/**
* @module foobar
*/
/**
* @function
* @author Baa
* @name hello
* @description Output a greeting
* @param {String} name - The name of the person to say hello
*/
(function hello(name) {
/**
* @function
* @author Baz
* @inner
* @private
* @memberof module:foobar
* @description Check if the argument is a string (see: {@link module:foobar~hello})
* @param {String} string - The string
* @returns {String} Returns true if string is valid, false otherwise
*/
var isString = function checkString(string) { return typeof string === 'string'; };
if (isString(name))
console.log('Hello ' + name + '!');
}('Mr. Bubbles'));
Здесь я устанавливаю checkString
как личное и внутреннее , чтобы оно было описательным (поскольку вложенные функции не могут быть описаны), а затем я передаю -p
в документ частных функций. Наконец, я добавляю ссылку на родительскую функцию для справки.
Я думаю, jsdoc
излишне привередлив и должен быть заменен чем-то лучшим. Это порт javadoc
, поэтому в нем есть много вещей, которые имеют отношение к Java, но не к JS, и наоборот. Есть очень распространенные идиомы JS, такие как замыкания или вложенные функции , которые трудно или невозможно документировать.
Я всегда проверяю свои имена и отлаживаю с помощью флага --explain
.