- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我收到这个错误:
JsHint (W083): Don't make functions within a loop.
使用以下代码时:
for (var prop in cmd.properties) {
Object.keys(meta[prop].data).forEach(function (rule) {
rules.data[rule] = meta[prop].data[rule] ? true : false;
}.bind(this));
}
基本上我循环遍历一个对象的属性 meta[prop].data
并且对于每个属性,我使用 三进制
设置 true/false 其他另一个对象属性运营商。
阅读我看到的一些文档:
JSHint and ESLint encounter a function expression in a for, while or do statement body.
最佳答案
Is this error legitimate one?
是的,您是在循环中声明一个函数。最重要的是,bind
可能非常昂贵,因为它每次都必须创建一个新的词法范围并返回附加到该范围的"new"函数。
If yes, how to better re-write these lines?
如果可以,在循环之前声明函数并绑定(bind)一次或使用简单的闭包来避免显式绑定(bind)调用:
var scope = this;
var ruleFunc = function (rule) {
rules.data[rule] = meta[prop].data[rule] ? true : false;
}
for (var prop in cmd.properties) {
Object.keys(meta[prop].data).forEach(ruleFunc);
}
不过,我没有看到您在函数中的什么地方使用了 this
,因此您可以完全删除它:
var ruleFunc = function (rule) {
rules.data[rule] = meta[prop].data[rule] ? true : false;
}
for (var prop in cmd.properties) {
Object.keys(meta[prop].data).forEach(ruleFunc);
}
这两者都需要重构您的代码,因为您正在使用闭包从循环中获取 prop
变量。您可以使用 bind
来解决这个问题,但会影响性能:
var ruleFunc = function (prop, rule) {
rules.data[rule] = meta[prop].data[rule] ? true : false;
}
for (var prop in cmd.properties) {
Object.keys(meta[prop].data).forEach(ruleFunc.bind(this, prop));
}
您还使用条件返回 true
/false
,这是一种常见的味道。您通常希望将其转换为 bool 值,!!
是惯用的 JS 方式:
rules.data[rule] = !!(meta[prop].data[rule]);
如果可以,避免 for ... in
循环通常会让您的生活更美好,因此您可能也想重构它:
Object.keys(cmd.properties).forEach(function (prop) {
Object.keys(meta[prop].data).forEach(function (rule) {
rules.data[rule] = !!(meta[prop].data);
});
});
您也许可以进一步改进它。
关于javascript - JsHint (W083) : Don't make functions within a loop. - 使用 [].forEach();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31140514/
我正在使用 jshint,它给了我错误“不必要的分号”。 我不控制有问题的文件,我想忽略这个错误。 我在 jshint doc page 上找不到任何此类选项 最佳答案 事实证明,您可以通过为特定错误
我看到在每个目录的基础上指定 JSHint 选项的能力是 added here . 但是,我不清楚您实际上是如何利用这一点的。如何在单个目录中设置 JSH 选项,以便选项与其他目录不同? 最佳答案 似
假设我在一个文件上运行 JSHint。它报告了 83% 的错误。我想要 100% 的错误,但默认情况下它会显示“错误太多”。运行 jshint filename.js ,我将如何解除此限制并显示所有错
我的应用程序中有一个(单个)案例使用了 eval,并且我想仅针对这种情况抑制 JSHint 警告。 有办法实现吗?配置、魔法注释……? 最佳答案 是的,有办法。事实上是两个。在 October 201
尝试运行 jshint 时,我总是得到以下输出: C:\Users\foo\Source\ λ jshint -c .glados-jshintrc gulpfile.js ERROR: Can't
我有一个在我的代码库中使用的模式,它会在 jshint 上抛出一个无聊的警告。 我使用 --verbose 得到了警告的原因。它是W002。 我可以通过添加 /*jshint -W002*/来禁用每个
我正在使用 http://jshint.com/并且还想使用 http://flowtype.org/ .一旦我添加了静态类型,jshint 就会翻转,因为它不理解 : Object function
我正在使用 webpack.DefinePlugin注入(inject)全局常量作为我的构建管道的一部分。然而 jshint 提示常量“未定义”。 从我的 webpack.config.js 中:
我不是 ASI 的粉丝。但考虑到这是完全合法的 JavaScript,jshint(重复 8 次)到底在哪里期望找到分号? script.addEventListener('load', fu
我有这样的情况,我正在通过 gulp 从 vendor 脚本或我的脚本中构建缩小脚本,例如: var paths = { public : './public/javascripts
在对用于前端开发的 IDE 进行了一些综合评估后,我认为 WebStorm 领先。 缺少的一点是我们无法按照我们需要的方式配置 JSHint。 WebStorm 首选项 GUI 提供了一些选项,但不是
这完全是随机发生的。我所做的只是重新启动 Sublime,接下来我知道我必须重新设置 git.exe 的路径,而 SublimeLinter jshint 已损坏。我以各种顺序删除并重新安装了 Sub
我正在尝试 jshint 一些 javascript 文件,但由于某种原因,jshint 的本地 npm 安装无法正常工作。 包在那里: $ npm list --depth=0 testapp@1.
我使用 VIM 作为我的文本编辑器,并使用 Yeoman 来帮助我完成 Web 应用程序开发工作流程。 我已经在使用 vim-jshint帮助我从 VIM 中检查我的 javascript 文件,我想
当我发现 optional chaining 时,我正在编写一些 Javascript。 (?.)。我决定在我正在编写的一些代码中需要它。当我完成输入代码时,我注意到 JSHint 给了我一个错误,指
在 sublime text 上,我在尝试验证 JS 时遇到以下错误。 [Errno 2] No such file or directory: 'jshint' [cmd: ['jshint', '
在这种情况下解决 JSHint 错误的正确方法是什么?删除 function(i) 可以解决这个问题吗?这样会影响性能吗? for (var i = 0; i + 1 避免警告的一种方法是使用 se
在注释中使用“不安全字符”(例如变音符)时,出现以下错误: This character may get silently deleted by one or more browsers. 有什么方法
使用Gulp时,如何从JSHint获得输出以显示在Visual Studio 2015的错误列表中,而不是仅输出到任务运行器? 我尝试了this package,但是除了格式化Gulp输出的格式略有不
我正在尝试创建一个服务器端 git pre-receive Hook 来检查 php 和 javascript 文件的代码质量。因此,如果预接收钩子(Hook)测试失败,repo 服务器将使 git
我是一名优秀的程序员,十分优秀!