2014-01-09 73 views
0

我們都看到了功能檢測做這樣的事情:使用`in`有什麼好處,而不是object.prop?

var touch = function() { 
    return 'ontouchstart' in window; 
}; 

但是,如果有使用in操作過這樣的事情(這節省了幾個字節)的任何其他好處我不知道?

var touch = function() { 
    return !!window.ontouchstart; 
}; 

使用in還有其他好處嗎?

回答

5

它們都完全不同。

當你

!!window.ontouchstart 

要檢查如果window.ontouchstarttruthy,但

'ontouchstart' in window 

檢查是否存在window對象ontouchstart

另一個問題使用!!window.ontouchstart檢查構件的存在是,即使ontouchstart存在,並且,如果它有一個falsy值,例如undefinednullfalse0,它仍然會返回false。所以,它不應該被用來檢查成員的存在。

+0

謝謝,很有道理! – Halcyon991

相關問題