2011-05-30 92 views
0
function doSomething(e) { 
    var targ; 
    if (!e) var e = window.event; //<<<< what does it do this check? 
    if (e.target) targ = e.target; 

} 

這很簡單,我不能得到它:)爲什麼我們需要檢查這個?一個解釋將是非常好的,謝謝...需要解釋這個簡單的代碼(js)ty!

回答

1

這增加了與舊版(Internet Explorer?)瀏覽器的兼容性,該瀏覽器不支持將event對象傳遞給處理程序,而是將它們定義在窗口對象上。

var e = window.event中不需要var,因爲它已經聲明(參數)。

它也可以寫成e = e || window.event;

1

基本上這個如果檢查是否設置e變量。如果不是,則會爲其指定一個值window.event(發生的窗口事件)

+0

那麼我們真的需要檢查一下嗎?我們可以假設那個'e'會以任何一種方式獲得價值嗎? – YoniGeek 2011-05-30 07:49:52

+0

@YoniGeek其他人(Shurdoof和Alex R.)說,這是爲了瀏覽器的兼容性,'e'將在符合標準的瀏覽器中設置,但不是window.event(僅限IE),所以如果您在未檢查W3C瀏覽器,你會在'e'中得到一個空值 – MeLight 2011-05-30 07:56:25