2011-10-11 28 views
32

JSLint有一些有趣的消息,比如当您使用eval语句时的eval is evil.以及比较两个文字(例如,文本)时的Weird relation.1 == 2你怎么能触发“这到底是什么?” JSLint消息?

我一直在寻找通过JSLint messages的名单,并注意到这一个在列表的底部:

是什么东西呢?

我通过JSLint source看了一下,发现这样的代码:

if (stack.length === 0) { 
    error("What the hell is this?", nexttoken); 
} 

我一直在尝试了一段时间,不成功,写触发此代码。我没有读到关于JSLint谈论这个错误消息,它为什么存在或导致它的原因。我简单地检查了代码,但我无法真正了解堆栈是什么,它是如何填充的或可能导致它为空。

有人可以编写一个代码示例,导致JSLint尖叫What the hell is this?或解释什么可以防止这种情况发生?

+1

我没有这样的代码......但检查您发布的代码片段我怀疑JSLint使用内部堆栈与一些(预定义的?)大小,并且只显示此消息时,该堆栈是空的,它不应该检查XML)......此消息只发生在JSLint错误导致空栈而其余的函数相信存在嵌套的标记来处理的情况下... – Yahia

+3

也许这是一个错误,应该/可以从来没有发生......只是一个想法。 –

+0

我想说这是一个很好的机会,它是在开发该工具时为内部使用而编写的。如果它遇到了一些没有预料到的情况,它会输出该消息,开发人员会进一步调查。只是一个猜测。 – riwalk

回答

16

它看起来很像"can't happen" checkdefensive programming的一种形式)。如果是这样,在实践中可能没有办法触发它。

+13

如果这是真的,这将是非常令人失望的。我一直梦想让JSLint直接侮辱我的代码。 –

+7

@Peter至少你会一直让Visual Studio调用开发者一个工具。 – millimoose