首先,x is a or b
不測試如果x
要麼a
或b
;您正在尋找x is a or x is b
。這也可以寫成x in [a, b]
無論如何編譯爲相同的東西。
其次後綴unless
有點不尋常。 (a) -> b unless c
編譯成
function (a) {
if (!c) {
return b;
}
}
所以如果c
是真實的,該函數返回undefined
,這是falsey。所以這會起作用,但我會覺得這很混亂。其中的邏輯是真的:一個鏈接是外部的,只要鏈接目標不是非此即彼location.hostname
,「domain.com」或「sub.domain.com」,即
obj.hostname isnt location.hostname and obj.hostname isnt "domain.com" and obj.hostname isnt "sub.domain.com"
從而可以更簡明地寫爲
obj.hostname not in [location.hostname, "domain.com", "sub.domain.com"]
注意,也將適用於僞類的東西在那裏obj.hostname
爲undefined
,因爲undefined
肯定是不location.hostname
。這可能不是你想要的。您可以使用obj.hostname? and obj.hostname not in [...]
過濾出根本沒有hostname
的元素。
還有一個問題需要跟進 - 我可以設置排除所有.domain.com子域的規則嗎?例如* .domain.com - 沒有全部指定它們? – strangerpixel 2014-09-22 11:25:58