2014-09-24 36 views
3

我有如下形式的一些代碼:的JSLint給怪「怪異的關係」的消息

function test(a,b,x) { 
    return (a > x) !== (b > x); 
} 

這似乎是給我一個合理的一段代碼,但JSLint的一個「奇怪的關係」的消息抱怨。

因此,首先,有誰知道爲什麼JSLint抱怨?其次,有沒有辦法讓某種程度上的「奇怪的關係」錯誤得到遏制?

+1

http://jslinterrors.com/weird-relation – epascarello 2014-09-24 12:46:25

回答

1

某些原因JSLInt看到左側和右側相同。

方式,以避免這將是它分解成變量

function test(a, b, x) { 
    "use strict"; 
    var t1 = a > x, 
     t2 = b > x; 
    return t1 !== t2; 
} 
+0

嗯,這件事情我沒有考慮......當然這不是預期的行爲?不過,我會使用你的修復程序。 – Oystein 2014-09-24 13:00:22

+0

它是爲了防止像'(「foo」===「foo」)'這樣的代碼,但是由於某種原因,當(X> Y)包含在任何一邊時,它就會嚇倒。所以'(a!==(x> y))'也觸發它。自從我過去遇到它時,我只知道解決它的辦法,我從來沒有搜索過代碼來查看檢查實際上在做什麼。 – epascarello 2014-09-24 13:02:45

+2

它似乎是故意的,所以如果任何一方本身就是一種關係,那麼它就被認爲是「怪異的」:https://github.com/douglascrockford/JSLint/blob/394bf/jslint.js#L2133 – cmbuckley 2014-09-24 13:33:14