Yanıtlar:
Hayır, tırnak işaretleri bir fark yaratmaz (belirttiğiniz gibi, geçerli bir JavaScript tanımlayıcısı olmayan bir anahtar kullanmak istemiyorsanız).
Bir yan not olarak, JSON veri alış biçimi yapar tanımlayıcılar çift tırnak gerektiren (ve yok değil tek tırnak izin verin).
Gönderen Öncelenmemiş özellik adları / JavaScript Nesne anahtarları , benim yazma-up konuda:
Tırnaklar yalnızca özellik adı sayısal bir değişmezse veya geçerli bir tanımlayıcı adı ise atlanabilir .
[...]
Köşeli ayraç notasyonu tüm mülk adları için güvenle kullanılabilir.
[...]
Nokta gösterimi yalnızca özellik adı geçerli bir tanımlayıcı adı olduğunda kullanılabilir.
Ayrılmış kelimelerin ES5'te alıntılanmamış özellik adları olarak kullanılmasına izin verildiğini unutmayın. Ancak, ES3 ile geriye dönük uyumluluk için, onları yine de alıntılamayı öneririm.
Ayrıca, herhangi bir özellik adının tırnak işaretleri olmadan ve / veya nokta gösterimi ile kullanılıp kullanılamayacağını anlatacak bir araç yaptım. Mothereff.in/js-properties adresinde deneyin .
Burada bir fark yok. Sadece bir tarz meselesi. Bunu yapmanın nedenlerinden biri, 'süper' veya 'sınıf' ı anahtar olarak kullanabilmeleridir, çünkü bunlar ayrılmış anahtar kelimelerdir.
Bazı insanlar boşluk içeren bir dizeye geçmeye cazip gelebilir ve o ['boşluk alabilirim'] deyin. Ama ben buna kötü uygulama diyebilirim.
Hayır, javascript için değil. Ancak, bazı JSON ayrıştırıcıları, anahtarların etrafındaki tırnak işaretleri bulunmadığında başarısız olur.
Farklı oldukları bazı durumlar vardır. Örneğin, jQuery kullanıyorsanız ve bir öğe oluşturmak için jQuery $ () komutunu çağırırken geçirilecek parametrelerin bir listesini yapıyorsanız, tırnak içine alınmış kelimeler parametrelere ve tırnaksız kelimeler işlevlere dönüştürülür. Örneğin, "boyut", nesnenin boyut niteliğini ayarlar ve boyut (tırnak işaretleri olmadan), nesne üzerindeki boyut () işlevini çağırır. En alttaki jQuery () işlevine bakın :
İkinci argüman uygun olsa da, esnekliği istenmeyen
<input>
boyutlara neden olmak yerine .size () yöntemini çağırmak gibi istenmeyen sonuçlara (ör. $ (" ", {Size: "4"}) yol açabilir. Böylece önceki kod bloğu aşağıdaki gibi yazılabilir:
obj = { 12e34: true };
ile aynı değildirobj = { '12e34': true };
. Birincisiobj['1.2e+35']
, kullanacağınız ikincisi için tesise üzerinden erişmenizi gerektirirobj['12e34']
. Daha fazla ayrıntı için cevabıma bakın.