Untuk fungsi global, Anda dapat menggunakan yang ini alih-alih evaldisarankan dalam salah satu jawaban.
var global = (function (){
return this;
})();
if (typeof(global.f) != "function")
global.f = function f1_shim (){
// commonly used by polyfill libs
};
Anda bisa menggunakan global.f instanceof Functionjuga, tapi afaik. nilai Functionakan berbeda dalam bingkai yang berbeda, sehingga hanya akan berfungsi dengan aplikasi bingkai tunggal dengan benar. Itu sebabnya kami biasanya menggunakan typeofsebagai gantinya. Perhatikan bahwa dalam beberapa lingkungan dapat terjadi anomali typeof fjuga, misalnya oleh MSIE 6-8 beberapa fungsi misalnya alertmemiliki tipe "objek".
Dengan fungsi-fungsi lokal, Anda dapat menggunakannya di jawaban yang diterima. Anda dapat menguji apakah fungsinya juga lokal atau global.
if (typeof(f) == "function")
if (global.f === f)
console.log("f is a global function");
else
console.log("f is a local function");
Untuk menjawab pertanyaan, kode contoh berfungsi untuk saya tanpa kesalahan di peramban terbaru, jadi saya tidak yakin apa masalahnya dengan itu:
function something_cool(text, callback) {
alert(text);
if( callback != null ) callback();
}
Catatan: Saya akan menggunakan callback !== undefinedsebagai gantinya callback != null, tetapi mereka melakukan hampir sama.