Node.js ialah masa jalan JavaScript yang sangat popular, yang membolehkan kod JavaScript kami dijalankan di bahagian pelayan. Dalam proses menggunakan Node.js, kami sering menghadapi pelbagai masalah. Antaranya, masalah biasa ialah ralat yang dilaporkan semasa menggunakan typeof.
Dalam JavaScript, typeof ialah operator yang biasa digunakan. Ia digunakan untuk menentukan jenis pembolehubah atau ungkapan. Kita boleh menggunakan typeof untuk menentukan sama ada pembolehubah ialah rentetan, nombor, nilai Boolean, dsb.
Dalam Node.js, biasanya tiada masalah menggunakan typeof. Tetapi dalam beberapa kes, jenis akan melaporkan ralat. Contohnya:
Ralat ini mungkin kelihatan pelik, tetapi sebenarnya mudah untuk diperbaiki. Punca masalah ialah Node.js menggunakan mekanisme pemuatan modul khas, yang menghalang beberapa jenis pembolehubah daripada dikenali dengan betul.
Untuk menyelesaikan masalah ini, kita boleh menggunakan pembolehubah khas __proto__ yang disediakan oleh Node.js. Pembolehubah ini ialah sifat rantaian prototaip dalam JavaScript dan digunakan untuk mengakses rantaian prototaip objek. Dalam Node.js, kita boleh menggunakan __proto__ untuk menentukan jenis pembolehubah.
Sebagai contoh, kita boleh menggunakan kod berikut untuk menentukan sama ada pembolehubah ialah fungsi:
var a = function() {}; if (a.__proto__ === Function.prototype) { console.log('a is a function'); } else { console.log('a is not a function'); }
Begitu juga, kita juga boleh menggunakan __proto__ untuk menentukan sama ada objek adalah nol:
var a = null; if (a.__proto__ === Object.prototype) { console.log('a is null'); } else { console.log('a is not null'); }
Menggunakan __proto__ dan bukannya typeof boleh menyelesaikan masalah ini dengan berkesan dalam Node.js. Tetapi kita perlu ambil perhatian bahawa __proto__ ialah atribut bukan standard dalam JavaScript dan tidak disyorkan untuk digunakan dalam projek formal. Jika ia perlu digunakan dalam persekitaran pengeluaran, kita harus menggunakan kaedah lain sebaliknya.
Untuk meringkaskan, menggunakan typeof dalam Node.js kadangkala melaporkan ralat. Ini disebabkan oleh mekanisme pemuatan modul khas yang digunakan dalam Node.js, yang menyebabkan beberapa jenis pembolehubah tidak dapat dikenali dengan betul. Untuk menyelesaikan masalah ini, kita boleh menggunakan __proto__ dan bukannya typeof. Walau bagaimanapun, adalah lebih baik untuk tidak menggunakan __proto__ dalam projek sebenar dan kaedah lain harus digunakan sebaliknya.
Atas ialah kandungan terperinci laporan ralat jenis nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!