de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 harpo
harpo
Question

Mengapa fungsi JavaScript saya terkadang "tidak didefinisikan"?

Saya memanggil fungsi JavaScript saya. Mengapa saya terkadang mendapatkan error 'myFunction is not defined' padahal fungsi tersebut sudah didefinisikan?

Sebagai contoh. Saya kadang-kadang mendapatkan 'copyArray tidak didefinisikan' bahkan dalam contoh ini:

function copyArray( pa ) {
    var la = [];
    for (var i=0; i < pa.length; i++)
        la.push( pa[i] );
    return la;
}

Function.prototype.bind = function( po ) {
    var __method = this;
    var __args = [];

    // Sometimes errors -- in practice I inline the function as a workaround.
    __args = copyArray( arguments );

    return function() {
        /* bind logic omitted for brevity */
    }
}

Seperti yang bisa Anda lihat, copyArray didefinisikan di sana, jadi ini tidak mungkin tentang urutan pemuatan file skrip.

Saya telah mendapatkan hal ini dalam situasi yang lebih sulit untuk diatasi, di mana fungsi pemanggilan terletak di file lain yang harus dimuat setelah fungsi yang dipanggil. Tetapi ini adalah kasus paling sederhana yang bisa saya sajikan, dan tampaknya menjadi masalah yang sama.

Hal ini tidak terjadi 100%, jadi saya menduga ada masalah yang berhubungan dengan load-timing. Tapi saya tidak tahu apa.

@Hojou: Itu adalah bagian dari masalah. Fungsi di mana saya sekarang mendapatkan kesalahan ini adalah addLoadEvent saya sendiri, yang pada dasarnya adalah versi standar dari fungsi perpustakaan umum.

@James: Saya mengerti itu, dan tidak ada kesalahan sintaksis dalam fungsi tersebut. Ketika itu terjadi, kesalahan sintaks juga dilaporkan. Dalam kasus ini, saya hanya mendapatkan 'not defined' error.

@David: Skrip dalam kasus ini berada di file eksternal yang direferensikan menggunakan metode normal <script src="file.js"></script> di bagian kepala halaman.

@Douglas: Ide yang menarik, tetapi jika demikian, bagaimana kita bisa memanggil fungsi yang ditentukan pengguna dengan percaya diri? Bagaimanapun, saya mencoba ini dan tidak berhasil.

@sk: Teknik ini telah diuji di seluruh browser dan pada dasarnya disalin dari pustaka Prototype.

39 2008-09-30T16:38:57+00:00 3
Peter Mortensen
Peter Mortensen
Pertanyaan edit 12 Agustus 2011 в 10:47
Pemrograman
javascript
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
Solution / Answer
David McLaughlin
David McLaughlin
30 September 2008 в 4:47
2008-09-30T16:47:14+00:00
Lebih
Sumber
Sunting
#8525700

Seharusnya hal ini tidak mungkin terjadi jika Anda hanya menyertakan skrip pada halaman.

Fungsi "copyArray" harus selalu tersedia ketika kode JavaScript mulai dijalankan, tidak peduli apakah itu dideklarasikan sebelum atau sesudahnya - kecuali jika Anda'memuat file JavaScript secara dinamis dengan pustaka ketergantungan. Ada berbagai macam masalah dengan pengaturan waktu jika itu yang terjadi.

Peter Mortensen
Peter Mortensen
Jawaban edit 12 Agustus 2011 в 10:49
8
0
Per Hornsh&#248;j-Schierbeck
Per Hornshøj-Schierbeck
30 September 2008 в 4:42
2008-09-30T16:42:54+00:00
Lebih
Sumber
Sunting
#8525698

Dugaan saya adalah, entah bagaimana dokumen tidak dimuat sepenuhnya pada saat metode dipanggil. Minta kode Anda dieksekusi setelah event dokumen siap.

4
0
James Curran
James Curran
30 September 2008 в 4:44
2008-09-30T16:44:49+00:00
Lebih
Sumber
Sunting
#8525699

Kesalahan sintaks dalam fungsi - atau dalam kode di atasnya - dapat menyebabkan fungsi tersebut tidak terdefinisi.

2
0
Related communities 1
JavaScript Indonesia
JavaScript Indonesia
14 533 pengguna
Grup JavaScript yang membahas JavaScript, framework JS, dan Node JS secara universal. Cek Pinned Message untuk keterangan lebih lanjut. Komunitas ReactJS: https://t.me/react_idn
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Asilbek Qadamboyev
Terdaftar 6 jam yang lalu
2
Akshit Mehta
Terdaftar 2 hari yang lalu
3
me you
Terdaftar 5 hari yang lalu
4
Никита иванов
Terdaftar 1 minggu yang lalu
5
Alex1976G_06
Terdaftar 1 minggu yang lalu
ID
JA
KO
RU
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi