JSDOC:如何记录函数的内部变量

时间:2016-02-21 20:09:10

标签: jsdoc jsdoc3

有没有办法让JSDOC在函数内部显示变量而不在函数前使用 @namespace 注释?

我制作了一个小测试对象,但它只显示最后一个函数的内部变量 k ,它被声明为命名空间。我想使用 @memberof!注释和完全 @name 注释会在下面第二个方法中显示内部变量,名为 diff 。我在命令上运行jsdoc3,选项 - 访问“all”--explain

以下是测试对象的代码:

(function(){
    "use strict";
    /**
     * @namespace
     * @type {{}}
     */
    window.myFunctions = {};
    /**
     * Return the sum
     * @param {number} i
     * @param {number} j
     * @return {number}
     */
    window.myFunctions.sum = function(i, j) {
      /**  @type {number} */
      var k = i + j;
      return k;
    };
    /**
     * Return the difference i - j
     * @param {number} i
     * @param {number} j
     * @return {number}
     */
    window.myFunctions.diff = function(i, j) {
      /**
       * @inner
       * @memberof! window.myFunctions.diff
       * @type {number}
       * @name window.myFunctions.diff~k
       */
      var k = i - j;
      return k;
    };
    /**
     * Return the product
     * @namespace
     * @param {number} i
     * @param {number} j
     * @return {number}
     */
    window.myFunctions.multiply = function(i, j) {
      /** @type {number} */
      var k = i * j;
      return k;
    }
});

2 个答案:

答案 0 :(得分:1)

我注意到你的代码在IIFE中,你应该read this issue

答案 1 :(得分:1)

您需要使用@module@exports代码。

来自documentation

  

如果将AMD模块定义为返回对象的函数   在文字中,使用@exports标记来记录模块的名称。 JSDoc   将自动检测对象的属性是否为其成员   模块。

因此,您的代码示例可能会标记为:

/**
 * functions module.
 * @module my/functions
 */
(function(){
    "use strict";
    /**
     * @namespace
     * @type {{}}
     * @exports my/functions
     * @name myFunctions
     */
    window.myFunctions = {};
    /**
     * Return the sum
     * @param {number} i
     * @param {number} j
     * @return {number}
     * @exports my/functions
     * @name sum
     */
    window.myFunctions.sum = function(i, j) {
      /**
       * @type {number}
       * @exports my/functions
       * @name k
       */
      var k = i + j;
      return k;
    };
    /**
     * Return the difference i - j
     * @param {number} i
     * @param {number} j
     * @return {number}
     * @exports my/functions
     * @name diff
     */
    window.myFunctions.diff = function(i, j) {
      /**
       * @inner
       * @memberof! window.myFunctions.diff
       * @type {number}
       * @name window.myFunctions.diff~k
       * @exports my/functions
       */
      var k = i - j;
      return k;
    };
    /**
     * Return the product
     * @namespace
     * @param {number} i
     * @param {number} j
     * @return {number}
     * @exports my/functions
     * @name multiply
     */
    window.myFunctions.multiply = function(i, j) {
      /**
       * @type {number}
       * @exports my/functions
       * @name k
       */
      var k = i * j;
      return k;
    }
});