2012-12-10 27 views
21

Bu JSON koduna rastladım. undefined değerini kullandığını fark ettim. Bu değer türü hakkında daha fazla bilgiyi nerede bulabilirim? sadece değişken language başlatılmadı gösterir ya da henüz tanımlanmış değil olabilir neredeJSON tanımsız değer türü

tracks:[ 
    (  { 
     codec:"h264", 
     language:undefined, 
     id:1, 
     bitrate:785236, 
     content:"video" 
    }  ), 
    (  { 
     codec:"aac", 
     language:undefined, 
     id:2, 
     bitrate:75969, 
     content:"audio" 
    }  ) 
    ], 
+2

size JSON geçerli olduğundan emin misiniz? Parantez (ilk MuraliPrasanth tarafından not edildi) en azından şüpheli görünüyor. –

+0

Bu geçerli bir JSON değil. Parantezlere izin verilmez. Ne de 'undefined' literal değildir. "undefined" javascript'te bir değerdir: http://www.ecma-international.org/ecma-262/5.1/#sec-4.3.9 –

+0

JSON olduğundan emin misiniz? Ben de bir [object literal] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects) snippet'ine benziyor. –

cevap

46
  • tanımsız o javascript geçerli olsa bile, geçerli bir json değeri değil. the official json standard (ECMA-404, Bölüm 5) kaynaktan:

    bir JSON değer bir amacı, dizisi, dizi, dizi, doğru, yanlış veya boş olabilir.

    json için
  • , boş yerine tanımsız kullanımı: { "something": null }

+4

ile aynı şey değildir. Eğer bir değerin tanımsız olmasını istiyorsanız, JSON'dan tamamen çıkartın. Bu şekilde, ayrıştırıldıktan sonra okumaya çalıştığınızda, tanımsız olacaktır. – totymedli

+1

Ama bu, bir cevabın neye benzemesi gerektiğini tam olarak bildiğini varsayar. Hem sunucu hem de istemci oluşturuyorsanız, hangisi iyidir, ancak bu çoğu zaman geçerli değildir. – Ringo

+0

Elbette. Bu optimal bir çözüm değildir, sadece sizin için (herhangi bir nedenden dolayı) tanımlanmamış bir değer döndürmeniz gereken bir çözümdür. – totymedli

4

undefined özel bir türüdür. javascript içinde

null basit bir değer olmadığını gösterir, ve da yine de faydalı olmadığını temsil undefined değer sayı ve şeritler gibi objects.The “hiçbir değer” belirtmek için kullanılabilir, bu değeri Başlatılmamış olan değişkenler ve object özelliği veya undefined bulunmayan array öğesinden aldığınız değer, tanımlanmamış bir değere ilklendirilmiş olan önceden tanımlanmış bir global değişkendir.

null ve undefined bir TypeError neden bu değerlerin özelliğine veya yöntemine erişmek için . veya [] kullanarak, herhangi özelliklerini veya methods.In gerçeğini yok.

+0

Tanımlı bir değeri değişkene yerleştirmek, onu tanımsızlaştırmaz. Tek seçenek, bir _undefined_ değerinin bu özellikte depolanması veya JSON'un otomatik olarak üretilmemesidir. –

+0

undefined olan dil değişkenine veri –

+0

, "undefined", önceki tüm tümceyi (eksik bir virgül varsa) veya "veri" ye değil, "veri" ye (daha da fazlası) bağlar. Yanlış anlaşıldınız, inanıyorum. –

İlgili konular