Apakah ada perbedaan di antara keduanya
obj = {'foo': 'bar'}
dan
obj = {foo: 'bar'}
Saya perhatikan bahwa Anda tidak dapat menggunakan -
kunci ketika saya tidak menggunakan tanda kutip. Tetapi apakah itu benar-benar membuat perbedaan? Jika ya, yang mana?
javascript
meo
sumber
sumber
obj = { 12e34: true };
tidak sama denganobj = { '12e34': true };
. Yang pertama akan meminta Anda untuk mengakses properti melaluiobj['1.2e+35']
, sedangkan untuk yang terakhir Anda akan gunakanobj['12e34']
. Lihat jawaban saya untuk lebih jelasnya.Dari Nama properti / kunci objek yang tidak dikutip dalam JavaScript , tulisan saya tentang subjek:
Perhatikan bahwa kata-kata yang dipesan diperbolehkan untuk digunakan sebagai nama properti yang tidak dikutip dalam ES5. Namun, untuk kompatibilitas dengan ES3, saya sarankan mengutipnya.
Saya juga membuat alat yang akan memberi tahu Anda jika ada nama properti yang dapat digunakan tanpa tanda kutip dan / atau dengan notasi titik. Cobalah di mothereff.in/js-properties .
sumber
Tidak ada perbedaan di sini. Hanya masalah gaya. Salah satu alasan untuk melakukan ini adalah karena dapat menggunakan 'super' atau 'kelas' sebagai kunci karena kata kunci tersebut dilindungi undang-undang.
Beberapa orang mungkin tergoda untuk menyerahkan string dengan spasi putih lalu memanggil o ['Saya dapat memiliki spasi putih]. Tetapi saya akan menyebut praktik buruk itu.
sumber
Tidak, tidak untuk javascript. Namun, beberapa parser JSON akan gagal ketika tanda kutip di sekitar kunci tidak ada.
sumber
Ada beberapa situasi di mana mereka berbeda. Misalnya, jika Anda menggunakan jQuery, dan Anda membuat daftar parameter untuk dilewati ketika memanggil perintah jQuery $ () untuk membuat elemen, kata-kata yang dikutip diubah menjadi parameter, dan kata-kata yang tidak dikutip diubah menjadi fungsi. Misalnya, "ukuran" akan mengatur atribut ukuran objek, dan ukuran (tanpa tanda kutip), akan memanggil fungsi size () pada objek. Lihat jQuery () , di dekat bagian bawah:
sumber