jshint 错误:'_' 的重定义

5

我在我的express应用程序中使用了lodash库。 每当我像这样包含lodash:

var _ = require('lodash')

jshint报错如下:

Redefinition of '_' 

如果我删除require语句,应用程序将失败并报告它无法识别“_”。
我的jshint.rc文件包含以下语句:
 "globals": {
    "angular": false,
    "_" : false
  }

但这是为了让我可以在前端代码中包含它,而不会被jshint抱怨。

我该如何要求jshint忽略我的node代码中的此错误?


在 Node 中,下划线 _ 是一个保留字(它是上一条指令计算的值)。 - Dario
Juhana的评论帮助解决了问题。基本上在文件顶部添加了以下内容:/* jshint -W079 */ - runtimeZero
@Juhana 我会相信你,但如果我没记错的话,在 REPL 中是这样的。我错了吗(只是为了不再犯错误)? - Dario
1
@Dario REPL允许执行任何操作。但是,仅仅因为它们将最后一个返回值分配给该变量,并不意味着它是保留字。 - poke
2个回答

5
您已明确告诉jshint全局变量_为只读。
来自文档globals 用于告诉JSHint已在其他地方定义的全局变量的指令。如果值为false(默认),JSHint将将该变量视为只读。与undef选项一起使用。
/* globals MY_LIB: false */
由于您正在使用 require 来明确定义它,因此我认为您可以将 globals 列表中的_删除,以允许JSHint对变量进行赋值。
但是,如果您在没有显式要求的情况下使用_并希望它存在于环境中,则可以在 .jshintrc 中设置“_”:true仍允许对其进行分配。

3
在您的jshint.rc文件中,您可以添加:"no-native-reassign" : 0,这将禁用本地重新分配规则,或者您可以在为_赋值的函数之前放置/*jshint -W079*/。
当您不将_用作全局变量时,您还应该从jshint的Globals中删除它。或者将其设置为true,以便jshint不将其视为只读。
来源:JSLint错误说明

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接