2015-01-02 50 views
1

在像下面這樣的代碼上運行jsdoc時,@param文檔被忽略。我認爲這是因爲我在IIFE中返回函數,但考慮到JS在這種模式中有多普遍,我很難相信jsdoc無法處理它。jsdoc不信任@param聲明

/** @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); 
     }; 

    }()) 
}; 

回答

1

顯然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。無處不在)。

相關問題