19

显然,何时弃用和何时删除取决于开发人员,但我想知道如何警告开发人员 JavaScript 函数已被弃用?

一些流行的语言(JavaC#Python)以某种形式支持语言级别的弃用。

但是,对于 JavaScript,我找不到任何标准方法可以让开发人员指示函数已被弃用(在代码中)。我能做的最好的就是遵循(大量)发行说明。

例如,grepping jQuery 1.8 的完整源代码显示最少的内联注释:

# curl http://code.jquery.com/jquery-1.8.0.js | grep -i depre
// jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode
// *** attrChange attrName relatedNode srcElement  are not normalized, non-W3C, deprecated, will be removed in 1.8 ***
// Some plugins are using, but it's undocumented/deprecated and will be removed.
// Deprecated
// Limit scope pollution from any deprecated API
// Deprecated, use jQuery.browser.webkit instead

W3C 和 MDN 似乎没有标准方法或提供有关如何处理此问题的建议。

我发现的最好的是 JSDoc 的@deprecated标签。

有谁知道 JavaScript是否有我忽略的弃用注释?有没有更好或更常见的方法来做到这一点?

4

3 回答 3

13
console.log('This function is deprecated.');

这就是 jQuery Migrate(用于 1.8 -> 1.9 升级)如何帮助人们升级他们的代码。

从他们的维基

为了让开发人员在迁移旧 jQuery 代码时识别和修复兼容性问题,插件的开发(未压缩)版本在调用其任何功能时都会生成控制台警告消息。对于每条唯一消息,消息仅在控制台上出现一次。

于 2013-01-16T17:28:02.140 回答
7

基本上没有办法弃用方法/函数。由开发人员处理已弃用的成员。

我猜唯一可以做的就是尽最大努力记录已弃用的函数/方法,并@deprecated在源代码文档中使用标签。

然后,一些编译器(如果我没记错的话,Google Closure Compiler 会这样做)和高级 IDE,可以使用此标记来验证已编译的源代码并在使用某些已弃用的函数时发出警告。

于 2013-01-16T17:13:46.787 回答
1

使用deprecate()功能

除了 JSDoc 的标签之外,您还可以使用流行的util-deprecate包:@deprecated

import deprecate from "util-deprecate";

/**
 * @deprecated Use bar() instead
 */
const foo = deprecate(function () {

}, "foo() is deprecated, use bar() instead");

用户看到:

foo();
// foo() is deprecated, use bar() instead
foo();
foo();

这不是真正的标准,但它基于 Node.jsutil.deprecate()函数。

您可能需要像 Webpack、Browserify、Rollup 等捆绑器来为浏览器捆绑 npm 包。

于 2020-03-20T20:59:21.607 回答