2012-01-12 43 views
12

Trong php Tôi đang viết saunếu chức năng không tồn tại ghi chức năng - javascript

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

Trong javascript tôi muốn kiểm tra xem chức năng tồn tại và nếu không viết ra một chức năng rỗng

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

Điều này hoạt động tốt trong firefox nhưng, trong chrome ngay cả khi typeof bằng chức năng nó vẫn đi vào và tạo ra các chức năng trống. Tôi không thể tìm thấy một công việc xung quanh cho chrome, tôi đã cố gắng nếu (! Myfunction), nếu (typeof window.myfunction! = 'Function) nhưng không có gì có vẻ làm việc ở đây cho chrome khi mọi thứ dường như làm việc trong firefox. Bất kỳ ý tưởng?

+0

Vẫn không có câu trả lời? Tôi có cùng một vấn đề và giải pháp bên dưới không hiệu quả với tôi. –

Trả lời

29

Sử dụng biểu thức hàm, chứ không phải khai báo hàm.

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

(Tôi đang sử dụng window từ đoạn cuối cùng của bạn cho thấy bạn muốn có một chức năng toàn cầu)

+0

Điều này làm việc hoàn hảo nhờ –

+0

Đánh dấu là câu trả lời sau đó? – folktrash

+0

@BretThomas Nếu điều này làm việc, vui lòng đánh dấu nó là câu trả lời. –

6

Bạn nên sử dụng toán tử so sánh nghiêm ngặt! ==

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

Cũng cố gắng giữ chức năng js bên trong không gian tên, theo cách này bạn tránh va chạm với các thư viện js khác trong tương lai.