如何修改这些行以使jshint满意?
作业是一种表达方式。为什么jshint不理解这个?解释者显然会这样做。
Line 572: while(bookmark_element=bookmark_list[iterator++])
Expected a conditional expression and instead saw an assignment.
Line 582: while(bookmark_element=bookmark_list[iterator++])
Expected a conditional expression and instead saw an assignment.
Line 623: while(element_iterator=element_iterator.nextSibling)
Expected a conditional expression and instead saw an assignment.
答案 0 :(得分:20)
如果你真的想听JSHint,请将表达式转换为布尔值:
while (!!(bookmark_element=bookmark_list[iterator++]))
! means: Something that evaluates to true is converted to false,
something that evaluates to false is converted to true.
因此,!!
表示:将某些东西转换为条件表示。
答案 1 :(得分:19)
/*jshint boss:true */
试用options。
答案 2 :(得分:13)
我确信jshint理解表达式很好,只是大多数写if (a = b)
的人实际上意味着if (a == b)
,所以这会产生警告。
由于您的代码符合您的意图,您可以添加一个明确的测试:
while ((element_iterator = element_iterator.nextSibling) !== null) { ... }
答案 3 :(得分:4)
根据JSHint docs,至少有两种方法可以解决报告的错误。
/*jshint boss:true */
while ((element_iterator = element_iterator.nextSibling)) {...}
就我个人而言,我认为使用额外的括号是最好的做法,因为它可以保持错误检查,但仍然可以在代码方面做得很好。之前添加!!
实际上没有任何内容,只能将表达式来回转换为真/假两次。
答案 4 :(得分:0)
这是一个表达式,您可以修改它以使用JSHint(尽管它不是很好),如下所示:
while(element_iterator.nextSibling) {
element_iterator = element_iterator.nextSibling;
最后一个例子。但是,您不需要这样做。 JSHint只是一个帮助你改善编码习惯和纠正错误的工具,但鉴于你所拥有的是清晰,简洁,并且(在我看来)最好的方法 - 只需忽略这些信息。
答案 5 :(得分:0)
jshint无法判断你是否真的打算在条件块中进行赋值,或者是否真的应该进行比较。担心的是其他人可能会有同样的怀疑。
对于迭代器,我认为你没事。
答案 6 :(得分:0)
我遇到了这个错误,因为我在函数前面的声明中有一个尾随逗号:
this.foo = "bar", // <- Error was here
this.myfunc = function() {
... // <- Error reported on this line
};
(很难找到,但强化了我的观点,认为短信通常是正确的,这是我的代码错了。如果我在全球范围内禁用了警告 - 或者甚至在那个地方 - 那个错误仍然存在。</lecture>
)子>
答案 7 :(得分:0)
在您的Javascript文件中添加/* jshint expr: true */
条注释,它将不再显示警告。