如何檢查JavaScript中是否存在函數?

我按照本指南建立了一個用於通信的新JS。 app

個人代碼是 函數

function getID( swfID ){
     if(navigator.appName.indexOf("Microsoft") != -1){
          me = window[swfID];
     }else{
          me = document[swfID];
     }
}

function js_to_as( str ){
     me.onChange(str);
}

可是,有時個人onChange沒法加載。 螢火蟲錯誤 spa

me.onChange不是一個函數 code

我想優雅地降級,由於這不是我程序中最重要的功能。 typeof給出相同的錯誤。 事件

關於如何確保它存在而後僅執行onChange任何建議? get

(如下任何一種方法都不能嘗試抓到一件做品) io


#1樓

function js_to_as( str ){
     if (me && me.onChange)
         me.onChange(str);
}

#2樓

嘗試這樣的事情: function

if (typeof me.onChange !== "undefined") { 
    // safe to use the function
}

或更好(根據UpTheCreek的評論) cli

if (typeof me.onChange === "function") { 
    // safe to use the function
}

#3樓

無條件 bug

me.onChange=function(){};

function getID( swfID ){
     if(navigator.appName.indexOf("Microsoft") != -1){
          me = window[swfID];
     }else{
          me = document[swfID];
     }
}

function js_to_as( str ){
     me.onChange(str);
}

#4樓

我會懷疑me沒有正確分配onload。

將get_ID調用移到onclick事件中應該注意這一點。

顯然,您能夠如前所述進一步陷井:

function js_to_as( str) {
  var me = get_ID('jsExample');
  if (me && me.onChange) {
    me.onChange(str);
  }
}

#5樓

我將更進一步以確保該屬性確實是一個函數

function js_to_as( str ){
     if (me && me.onChange && typeof me.onChange === 'function') {
         me.onChange(str);
     }
}
相關文章
相關標籤/搜索