2011-11-15 58 views
0

說,您想要對可能或不可能位於DOM中的元素應用元素原型中的方法。在應用方法之前對元素/事件進行完整性檢查

通常,我用來做:

var foo = document.getElementById("foo"); // or $("foo") for mootools/prototype, whatever 
if (foo) 
    foo.focus(); 

雖然我現在認爲,由於flasy空和懶惰& &,它實際上可以寫爲:

var foo = document.getElementById("foo"); 
foo && foo.focus(); 

類似:

var clickHandler = function(event) { 
    event && event.foo && event.foo(); 
}; 


clickHandler({ 
    foo: function() { alert("bar"); } 
}); 

clickHandler(); 

我還沒有看到這使用太多或根本沒有作爲模式,這使我相信,它是:

  • 壞可讀性目的(不是我反正)
  • 有情況下,它會失敗

我是安全的繼續使用嗎?

http://jsfiddle.net/td6We/1/玩。我似乎無法打破它...

回答

1

是不是安全

在代碼的上下文中能夠執行||&&的返回機制是一致的和明確的。在不瞭解JS中的||&&的行爲的程序員周圍使用它可能並不安全。

是否可讀性

這取決於你在做什麼。對於您對dom元素執行操作的情況,我強烈建議使用if語句。這很容易讓一個單獨的語句變成多個跨瀏覽器的使用:

foo && foo.bar() 

可能會變成

foo && foo.bar(); 
foo && foo.baz(); 

此時它更清晰的:

if (foo) { 
    foo.bar(); 
    foo.baz(); 
} 

然而有些情況下,它不太可能變成更多。我總是使用這種特殊的陳述風格:

console&&console.log(foo, bar, baz); 
相關問題