2012-02-16 59 views
2

我發現自己檢查,看看是否JavaScript元素使用存在很多:創建一個函數來檢查,如果JS元素存在

if (typeof elem == "undefined") 
    // Do something 

我想創建一個函數這樣我就可以減少代碼的重複。

if (exists(elem)) 

這裏是我創建的功能:

if (typeof exists == 'undefined') { 
    function exists (e) 
    { 
     if (typeof e == "undefined") 
      return false; 
     return true; 
    } 
} 

的問題是它會通過函數之前的變量是不確定的。它會產生一個JavaScript錯誤。我如何創建一個函數來處理這個?

+0

離題了一下,但是你不應該在語句塊中聲明一個函數。這是非法的,雖然沒有被所有的實施強制執行。在*嚴格模式下,試圖這樣做會引發錯誤。 – 2012-02-16 02:49:16

回答

3

「問題是變量在通過函數之前未定義,它會生成一個javascript錯誤。」

通過「未定義」,我假定你的意思「未申報」,因此造成ReferenceError

如果是這樣,那麼在將它傳遞給函數之前,您需要測試它是否存在,這會使函數變得毫無意義。

而不是嘗試創建一個函數來測試未聲明的變量,只需在使用它們之前聲明它們。

IMO,typeof x === 'undefined'是一個醜陋的黑客,應該沒有必要。你應該考慮ReferenceError是一個朋友,告訴你需要修復的東西。 typeof黑客可以防止你的朋友告訴你發生了什麼事。

+1

+1同意「醜陋的黑客」一點,不知道爲什麼沒有更早來到我這麼流行 - 我猜... – xandercoded 2012-02-16 02:45:15

+1

@Xander:是的,我真的覺得這是不幸的。這只是避免應該在其他地方解決的問題。 – 2012-02-16 02:51:55

相關問題