为啥 JSLint 会在这个函数上给出严格的违规错误?
Posted
技术标签:
【中文标题】为啥 JSLint 会在这个函数上给出严格的违规错误?【英文标题】:Why does JSLint give strict violation error on this function?为什么 JSLint 会在这个函数上给出严格的违规错误? 【发布时间】:2013-07-20 03:40:53 【问题描述】:JSLint 给了我“严格违反”错误,尽管我在一个函数中使用了“this”上下文,将它隐藏在全局范围之外。
function test()
"use strict";
this.a = "b";
作为记录,我使用 Webstorm 中内置的 JSLint 解析器。
【问题讨论】:
当我将此代码粘贴到 JSLint.com 时,所有默认选项都没有收到错误消息。更改函数名称将其删除的错误上下文是什么? 我正在使用 Webstorm,它可能有一个过时的 JSLint 版本 您是否有两个函数命名为test
(在您的实时代码中)(相当于)?然后改变大小写会使它们变得不同。
【参考方案1】:
这是因为 JSLint 无法将您的函数识别为构造函数。按照惯例,您必须使用大写字母。
function Test()
"use strict";
this.a = "b";
【讨论】:
你可以看看jshint.com。它提供了更多的控制,而不是将您锁定在由 Crockford 的意见而不是规范控制的选项中。你遇到的问题也发生在非构造函数上,如果你声明函数,你将把对象作为方法。 (例如,如果在您的function test()...
之后您有obj.test = test;
,那么您最终得到了一个在test
属性上具有正确名称的函数,但由于IE 存在的问题而没有使用命名函数表达式。) 以上是关于为啥 JSLint 会在这个函数上给出严格的违规错误?的主要内容,如果未能解决你的问题,请参考以下文章
JSLint 严格违规。面向对象的 Javascript 挫折
如何使用 jenkins 中的 jslint 和违规插件查找特定错误?