Comparing to JSDoc Toolkit (JSDoc 2), JSDoc 3 reorganize tags and has more advanced features.
+Some reorganization doesn't keep backward-compatibility with JSDoc Toolkit.
+There are some tags that have different meaning or/and different parameter types.
+This guide provides information how to migrate your JSDoc comment to JSDoc 3.
+
+
Tags that have different meaning with JSDoc 2
+
+
+
@exports
+
Rewrite this tag to the @typedef tag. The @exports became a tag for module description (see @module, @exports).
+
@event
+
In JSDoc 2, the @event tag is a kind of function (it has same syntax with @function tag), and marked it emits event.
+ JSDoc 3's @event tag is used for describing event object. JSDoc 3 provides a new tag @fires tag instead of JSDoc 2's @event.
+
@class
+
The syntax and functionality of the @class tag now exactly matches the @constructor tag.
+ The new @class tag's parameter meaning is changed from JSDoc 2. It assumes the parameter is a class name
+ not class's description. Use @classdesc tag to write description.
+
@fileOverview
+
The tag name is changed. Use @file tag (or its synonym "@fileoverview", "@overview").
+
@member
+
"@member" was a synonym of the @memberOf, but now it has same meaning of @field of JSDoc 2.
+ Replace it with "@memberof".
Tag name is changed from camelCase to lowercase, "@memberof". And @methodOf (@method + @memberOf) and
+ @filedOf (@filed + @memberOf) are not spported in JSDoc 3. Replace each tag with
+ @memberof, @method + @memberof, @member + @memberof.
+
@constructs
+
JSDoc 2 allows a constructor function's description is following to @constructs tag because JSDoc 2's @constructs doesn't have a parameter.
+ JSDoc 3's @constructs has a parameter as a class name.
+ If there was some text after the tag, insert new line.
+
@name
+
JSDoc 3 provides the @alias tag for just renaming. The @name tag tells JSDoc to ignore all information from source code.
+ If you want to change the item name, the @alias tag is recommended. @name should be used for virtual items (created dynamically in runtime) only.
+
@public
+
In JSDoc 3, The @public tag doesn't affect a symbol's scope. Use the @instance, @static, and @global to change a symbol's scope.
+
@author
+
@author tag can parse E-Mail address following author name. You don’t have to write HTML to add "mailto:" link.
+
Meta tags
+
Meta tags is not supported in JSDoc 3.
+
+
+
Convenient New Features of JSDoc 3
+
JSDoc 3 provides new attractive features that improves your document's quality:
+
Long description:
+
JSDoc 3 has features that import long description instead of just API document created from source files:
It can add long description pages from HTML, Markdown format.
+
+
+
+
Type specification:
+
+
JSDoc 3 starts parsing type specification. It can receive more complex types.
+
+
Description for new types:
+
+
JavaScript is a very flexible language. It has many idioms on the syntax.
+JSDoc 3 starts supporting several new idioms.
+These new tags help you describe your intention more clearly.
+
+
Callback functions
+
JSDoc 3 can define a custom type of callback functions by using the @callback tag.
+
+
Enumeration
+
Definition of enumeration table in JSDoc 3 (the @enum tag) is easier than JSDoc 2
+(Using @member to each items).
+
+
Mix-in
+
Mix-in is a popular concept in dynamic languages including JavaScript.
+ JSDoc 3 can document this idiom by using @mixin and @mixes tags.
+
+
Abstract member
+
The @abstract tag identifies members that must be implemented
+This member should override by child classes.
+
+
Readonly
+
JSDoc 2 and JSDoc 3 already support the @constant (@const) tag to describe const member.
+ In addition to that, JSDoc 3 supports the @readonly tag it can use for getters.
JavaScript works on many different environment. Some environment supports module features and other environment
+has special objects.
+
+
Modules
+
JSDoc 3 supports a module description including CommonJS style module, a node.js style module, RequireJS style modules
+ See @module, @exports tags documents.
+
+
External modules
+
JSDoc 3 can describe an external or embedded items by using the @external tag.
+The class or type defined in an external module is usable as a base class or a parameter.
+
+
+
Link text font:
+
You don't have to write like <code>{@link Symbol}</code> anymore. JSDoc 3 provides
+features to create link with monospace font:
Comparing to JSDoc Toolkit (JSDoc 2), JSDoc 3 reorganize tags and has more advanced features.
+Some reorganization doesn't keep backward-compatibility with JSDoc Toolkit.
+There are some tags that have different meaning or/and different parameter types.
+This guide provides information how to migrate your JSDoc comment to JSDoc 3.
+
+
Tags that have different meaning with JSDoc 2
+
+
+
@exports
+
Rewrite this tag to the @typedef tag. The @exports became a tag for module description (see @module, @exports).
+
@event
+
In JSDoc 2, the @event tag is a kind of function (it has same syntax with @function tag), and marked it emits event.
+ JSDoc 3's @event tag is used for describing event object. JSDoc 3 provides a new tag @fires tag instead of JSDoc 2's @event.
+
@class
+
The syntax and functionality of the @class tag now exactly matches the @constructor tag.
+ The new @class tag's parameter meaning is changed from JSDoc 2. It assumes the parameter is a class name
+ not class's description. Use @classdesc tag to write description.
+
@fileOverview
+
The tag name is changed. Use @file tag (or its synonym "@fileoverview", "@overview").
+
@member
+
"@member" was a synonym of the @memberOf, but now it has same meaning of @field of JSDoc 2.
+ Replace it with "@memberof".
Tag name is changed from camelCase to lowercase, "@memberof". And @methodOf (@method + @memberOf) and
+ @filedOf (@filed + @memberOf) are not spported in JSDoc 3. Replace each tag with
+ @memberof, @method + @memberof, @member + @memberof.
+
@constructs
+
JSDoc 2 allows a constructor function's description is following to @constructs tag because JSDoc 2's @constructs doesn't have a parameter.
+ JSDoc 3's @constructs has a parameter as a class name.
+ If there was some text after the tag, insert new line.
+
@name
+
JSDoc 3 provides the @alias tag for just renaming. The @name tag tells JSDoc to ignore all information from source code.
+ If you want to change the item name, the @alias tag is recommended. @name should be used for virtual items (created dynamically in runtime) only.
+
@public
+
In JSDoc 3, The @public tag doesn't affect a symbol's scope. Use the @instance, @static, and @global to change a symbol's scope.
+
@author
+
@author tag can parse E-Mail address following author name. You don’t have to write HTML to add "mailto:" link.
+
Meta tags
+
Meta tags is not supported in JSDoc 3.
+
+
+
Convenient New Features of JSDoc 3
+
JSDoc 3 provides new attractive features that improves your document's quality:
+
Long description:
+
JSDoc 3 has features that import long description instead of just API document created from source files:
It can add long description pages from HTML, Markdown format.
+
+
+
+
Type specification:
+
+
JSDoc 3 starts parsing type specification. It can receive more complex types.
+
+
Description for new types:
+
+
JavaScript is a very flexible language. It has many idioms on the syntax.
+JSDoc 3 starts supporting several new idioms.
+These new tags help you describe your intention more clearly.
+
+
Callback functions
+
JSDoc 3 can define a custom type of callback functions by using the @callback tag.
+
+
Enumeration
+
Definition of enumeration table in JSDoc 3 (the @enum tag) is easier than JSDoc 2
+(Using @member to each items).
+
+
Mix-in
+
Mix-in is a popular concept in dynamic languages including JavaScript.
+ JSDoc 3 can document this idiom by using @mixin and @mixes tags.
+
+
Abstract member
+
The @abstract tag identifies members that must be implemented
+This member should override by child classes.
+
+
Readonly
+
JSDoc 2 and JSDoc 3 already support the @constant (@const) tag to describe const member.
+ In addition to that, JSDoc 3 supports the @readonly tag it can use for getters.
JavaScript works on many different environment. Some environment supports module features and other environment
+has special objects.
+
+
Modules
+
JSDoc 3 supports a module description including CommonJS style module, a node.js style module, RequireJS style modules
+ See @module, @exports tags documents.
+
+
External modules
+
JSDoc 3 can describe an external or embedded items by using the @external tag.
+The class or type defined in an external module is usable as a base class or a parameter.
+
+
+
Link text font:
+
You don't have to write like <code>{@link Symbol}</code> anymore. JSDoc 3 provides
+features to create link with monospace font: