jsdoc 不信任@param 声明

jsdoc doesn't trust @param declarations

在如下代码上运行 jsdoc 时,@param 文档将被忽略。我认为这是因为我在 IIFE 中返回函数,但考虑到这种模式在 JS 中有多常见,我很难相信 jsdoc 无法处理它。

/** @namespace */
var util = {
    /**
     * Repeat <tt>str</tt> several times.
     * @param {google.maps.Marker} str The string to repeat.
     * @param {number} [times=1] How many times to repeat the string.
     * @returns {string}
     */
    repeat: (function() {

        var magicNumber = 1;

        return function(str, times) {
            if (times === undefined || times < magicNumber) {
                times = magicNumber;
            }
            return new Array(times+1).join(str);
        };

    }())
};

显然,如果 jsdoc 认为记录的项目是 函数 ,它只会包含 @param@return 文档。您可以通过在文档注释中指定 @function 来强制执行此行为。

所以这有效:

/** @namespace */
var util = {
    /**
     * Repeat <tt>str</tt> several times.
     * @function <---- ADDED THIS LINE
     * @param {google.maps.Marker} str The string to repeat.
     * @param {number} [times=1] How many times to repeat the string.
     * @returns {string}
     */
    repeat: (function() {

        var magicNumber = 1;

        return function(str, times) {
            if (times === undefined || times < magicNumber) {
                times = magicNumber;
            }
            return new Array(times+1).join(str);
        };

    }())
};

(如果你问我的话有点乏味。我希望 jsdoc 要么足够聪明以实现它的功能,要么只是信任用户而不必在任何地方添加 @function。)