2012-01-12 2 views
12

В PHP я пишу следующееесли функция не существует функцию записи - яваскрипт

<?php 
if(x != 0) { 
echo "function myfunction(){};";  
} 
?> 

В JavaScript Я желаю, чтобы проверить, если функция существует, и если не выписывать пустую функцию

if(typeof myfunction != 'function'){ 
    function myfunction(){}; 
} 

Это отлично работает в firefox, но в хромированном состоянии, даже если функция типаof равна ей, она все еще входит в систему и создает пустую функцию. Я не могу найти работу для chrome, я пробовал if (! Myfunction), если (typeof window.myfunction! = '), Но ничего не работает здесь для хром, когда все работает в firefox. Есть идеи?

+0

По-прежнему нет ответа? У меня такая же проблема, и приведенное ниже решение не работает для меня. –

ответ

29

Используйте выражение функции, а не объявление функции.

if(typeof myfunction != 'function'){ 
    window.myfunction = function(){}; 
} 

(я использую window, так как ваш последний пункт предполагает, что Вы хотите глобальную функцию)

+0

Это сработало отлично, спасибо –

+0

Марк как ответ тогда? – folktrash

+0

@BretThomas Если это сработало, отметьте его как ответ. –

6

Вы должны использовать строгий оператор сравнения! ==

if(typeof myFunction !== 'function'){ 
    window.myFunction = function(){}; // for a global function or 
    NAMESPACE.myFunction = function(){}; // for a function in NAMESPACE 
} 

Также старайтесь держать Js функции внутри пространств имен, таким образом вы избегаете столкновений с другими js-библиотеками в будущем.

Смежные вопросы