Определите, существует ли статически названная функция JavaScript для предотвращения ошибок - PullRequest
23 голосов
/ 26 сентября 2011

У меня на сайте есть скрипт, который вызывает при вызове статически именованную функцию:

childLoad();

Функция childLoad() не всегда определяется, хотя она всегда вызывается. Как я могу запретить скрипту вызывать эту функцию, если она не существует?

Ответы [ 6 ]

56 голосов
/ 26 сентября 2011
if ( typeof childLoad == 'function' ) { 
    childLoad(); 
}
11 голосов
/ 26 сентября 2011

Вы можете использовать оценку короткого замыкания:

childLoad && childLoad();

<ч /> EDIT

('childLoad' in this) && childLoad && childLoad();

Это обеспечит возможность ссылки на childLoad, убедитесь, что оно не определено, а затем вызовите функцию. Это не проверка, чтобы убедиться, что это функция, но я лично считаю, что это не нужно.

ПРИМЕЧАНИЕ: this может не соответствовать контексту, на который вы ссылаетесь, если вы используете call или apply. Это действительно зависит от остальной части вашего кода.

6 голосов
/ 26 сентября 2011
if(typeof childLoad == 'function') {   
  childLoad();   
}
1 голос
/ 26 сентября 2011

Вы можете просто проверить:

if (childLoad)
    childLoad()
0 голосов
/ 29 марта 2016
<script>
/* yourfunction */
if(typeof yourfunction == 'function') {   
  yourfunction();   
}
function yourfunction(){
  //function code
}
</script>
0 голосов
/ 26 сентября 2011

Вы могли бы окружить это в попытке поймать!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...