gpt4 book ai didi

javascript - 当有许多外部定义的函数时,如何解决函数未定义的 JSHint 警告

转载 作者:行者123 更新时间:2023-11-29 14:48:29 25 4
gpt4 key购买 nike

这个常见问题的回答通常是声明每个 JavaScript 文件都应该配置它在 JSHint 配置中使用的外部定义的全局变量。

就我而言,我有定义数百个函数的库文件。我有许多其他文件调用这些库中的函数。

将每个库函数的名称复制并粘贴到 JSHint 配置中会很困难。

是否有更易于维护的方法来解决此警告?

  1. 是否有某种方法可以在 linting 之前将文件与其库文件组合起来?
  2. 是否有解决此问题的替代工具?
  3. 是否有创建或使用 JavaScript 库的方法无需回答此问题?

理想情况下,此问题的任何答案都适用于 Eclipse 插件。

最佳答案

你应该检查 globals选项。

在无法手动管理大量全局变量的情况下,最好的方法是为它们命名空间或自动编写 JSHint 配置。

命名空间

使用命名空间,类似于具有静态方法的类,您可以将相关的全局变量分组为单个对象的引用。我相信在现代编译器中,您应该期望在解析所述对象的关联引用时看到一些性能改进。

var gardening = (function () {
var exports = {};
exports.water = function () {};

function till () {};
exports.till = till;

return exports;
})();

var debug = {
prettyPrint: function (obj) {}
inspect: function () {}
};

因此,与拥有几十个肩并肩的全局变量的 blob 不同,您可以提取一些对象来对引用进行分组。创建这样的层次结构支持大脑为与其目的相关的功能构建树状解决方案的能力。

动态编写 JSHint 配置

如果您已经为您的项目实现了一些任务运行器(并且您可能已经实现),那么添加一些自定义任务以从源文件中聚合全局变量不会有什么坏处,因为这些可以计入分数并且无法合理管理使用手动方法。

#!/usr/bin/env node
// ./task.js
var fs = require('fs');

// Some pre-defined JSHint options
var jsHintOptions = {
maxerr: 10,
bitwise: true,
globals: {
foo: true,
bar: false
}
}

var cmd = process.argv[2];
if (cmd === 'author-jshintrc') authorJsHintRc();

// Hammer time!
function authorJsHintRc() {
var globals = [];
// Some fancy regular expression which can match
// the globals from your sources
var reMatchGlobal = /^\s+function\s([\w\d_]+)/gm;

var extractGlobals = function (name) {
var contents = fs.readFileSync(name).toString();
var matches = contents.match(reMatchGlobal);
globals.push.apply(globals, matches);
}

var registerGlobal = function (global) {
jsHintOptions.globals[global] = false;
}

// These are our problematic source files which contain
// too many globals to specify manually
[
'path/to/foo.js',
'path/to/bar.js'
].forEach(extractGlobals);

// Extend the jsHintOptions with the dynamically resolved globals
globals.forEach(registerGlobal);

// Author the project's .jshintrc
fs.writeFileSync('.jshintrc', JSON.stringify(jsHintOptions));
}

理想情况下,删除或扩展项目根目录中的 .jshintrc 应该意味着 Eclipse JSHint 插件会自省(introspection)这些选项,并且项目 JSHint 错误应该立即消失。

关于javascript - 当有许多外部定义的函数时,如何解决函数未定义的 JSHint 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29593723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com