2011-10-11 60 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