Di Jawa, Anda bisa menggunakan instanceOf
atau getClass()
pada variabel untuk mengetahui tipenya.
Bagaimana cara mengetahui tipe variabel dalam JavaScript yang tidak diketik dengan kuat?
Sebagai contoh, bagaimana saya tahu apakah bar
itu a Boolean
atau a Number
, atau a String
?
function foo(bar) {
// what do I do here?
}
javascript
Tom Tucker
sumber
sumber
Jawaban:
Gunakan
typeof
:Jadi kamu bisa melakukan:
Berhati-hatilah jika Anda mendefinisikan primitif ini dengan pembungkus objeknya (yang seharusnya tidak pernah Anda lakukan, gunakan literal jika memungkinkan):
Jenis array masih
object
. Di sini Anda benar-benar membutuhkaninstanceof
operator.Memperbarui:
Cara lain yang menarik adalah dengan memeriksa output dari
Object.prototype.toString
:Dengan itu Anda tidak perlu membedakan antara nilai dan objek primitif.
sumber
typeof hanya baik untuk mengembalikan tipe "primitif" seperti angka, boolean, objek, string, dan simbol. Anda juga dapat menggunakan
instanceof
untuk menguji apakah suatu objek adalah tipe tertentu.sumber
Menggunakan
type
:sumber
Number(1), Boolean(true)...
Satu-satunya masalah adalah ketika Anda menggunakannew
dan objek kotak dibuat, menggunakannya sebagai fungsi sebenarnya dapat berguna mengkonversi dari tipe lain.Boolean(0) === false, Number(true) === 1
null
?typeof null
is 'object'Di Javascript Anda bisa melakukannya dengan menggunakan fungsi typeof
sumber
Untuk menjadi sedikit lebih tepat ECMAScript-5.1-tepat daripada jawaban lain (beberapa mungkin mengatakan pedantic):
Dalam JavaScript, variabel (dan properti) tidak memiliki tipe: nilai memang. Lebih lanjut, hanya ada 6 jenis nilai: Tidak terdefinisi, Null, Boolean, String, Number, dan Object. (Secara teknis, ada juga 7 "spesifikasi jenis", tetapi Anda tidak dapat menyimpan nilai dari tipe tersebut sebagai properti objek atau nilai variabel - mereka hanya digunakan dalam spesifikasi itu sendiri, untuk menentukan cara kerja bahasa. Nilai-nilai tersebut Anda dapat memanipulasi secara eksplisit hanya dari 6 jenis yang saya cantumkan.)
Spec menggunakan notasi "Type (x)" ketika ingin berbicara tentang "type x". Ini hanya notasi yang digunakan dalam spesifikasi: ini bukan fitur bahasa.
Seperti jawaban lain memperjelas, dalam praktiknya Anda mungkin ingin tahu lebih banyak dari jenis nilai - terutama ketika jenisnya adalah Obyek. Apapun, dan untuk kelengkapan, berikut adalah implementasi JavaScript sederhana Tipe (x) seperti yang digunakan dalam spesifikasi:
sumber
Saya merasa frustasi karena
typeof
sangat terbatas. Ini versi yang ditingkatkan:uji sampel:
sumber
Untuk tipe JS bawaan Anda dapat menggunakan:
Di sini kita menggunakan metode 'toString' dari kelas 'Object' yang bekerja berbeda dari metode yang sama dari tipe lain.
Contoh:
Jika Anda membutuhkan nama kelas, Anda dapat menggunakan:
Contoh:
Tetapi fitur ini ditambahkan dalam ES2015 .
sumber
Ini solusi lengkapnya.
Untuk Modul CommonJs yang Dapat Diekspor atau Membutuhkan Modul ....
Sekarang Anda dapat mengimpor kode Sys ini dalam file Sys.js. maka Anda dapat menggunakan fungsi objek Sys ini untuk mengetahui jenis Objek JavaScript
Anda juga dapat memeriksa apakah Object Defined atau type is Function atau Object is Empty ... etc.
Sebagai contoh
sumber
Dalam JavaScript semuanya adalah objek
Untuk mendapatkan tipe Real , gunakan ini
Semoga ini membantu
sumber