Bu 2 Dizedeki fark (JavaScript)

Sep 07 2020

Dize veri türleri değişkenlerini değerlerle 2 şekilde oluşturmaya çalışıyordum .

  1. String-literal olarak
  2. Yeni Anahtar Kelime Kullanmak

Ama bana öyle geliyor ki, ikisi de console.log'daki temsil açısından farklı . Birisi bana 2. yolun dize döndürmediğini veya bir şekilde farklı olup olmadığını söyleyebilir mi?

var str1 = "abc";
var str2 = new String("def");
console.log(str1);
console.log(str2);

Beklenen:

abc, def

Çıktı:

Yanıtlar

9 xMayank Sep 07 2020 at 05:07

JavaScript'in iki ana tür kategorisi vardır: ilkeller ve nesneler.

typeof new String(); // "object"
typeof '';           // "string"

Bir değişkene ilkel değerler atama ifadeleri için, örneğin:

var str1 = "Hi";

JavaScript, aşağıdakileri kullanarak değişkeni dahili olarak oluşturur:

String("Hi")

New anahtar sözcüğünü kullanmak farklı çalışır ve bunun yerine bir nesne döndürür.

4 GauravMogha Sep 07 2020 at 05:07

Çağrı new String(something), bir String örneği nesnesi oluşturur.

Console.log () aracılığıyla sonuçlar aynı görünür çünkü ilkel dizeyi ona ilettiğiniz String örneğinden çıkarır.

Yani: sadece düz String () bir ilkel dize döndürür. new String ('xyz'), String yapıcısı tarafından oluşturulan bir nesne döndürür.

Açıkça bir String örneği oluşturmak nadiren gereklidir.

2 LarsNielsen Sep 07 2020 at 05:07

İki farklı şeyle çalışıyorsunuz. var str1 = "abc"Size ilkel verir. İken var str2 = new String("def");size bir string nesnesi verir. Bu iki tür farklı davranır

AkhilRavindran Sep 07 2020 at 05:12

String nesnesi, bir dizi karakterle çalışmanıza izin verir; Javascript'in dize ilkel veri türünü bir dizi yardımcı yöntemle sarar.

JavaScript, dize ilkelleri ile String nesneleri arasında otomatik olarak dönüşüm gerçekleştirdiğinden, String nesnesinin yardımcı yöntemlerinden herhangi birini bir dize ilkelinde çağırabilirsiniz.

Unknow Sep 07 2020 at 05:07

Bir nesneyi yazdırdığınızda, konsol genellikle nesnenin özelliklerini yazdırır.

İlkel ise konsol sadece değeri yazdırır.

İlkel kutulu değildir, ancak bir kurucu ile bir dize oluşturursanız, dize nesnede kutu içine alınır ve her zaman özelliklere sahiptir.

Yalnızca bir değişmez bilgi ise, yalnızca bir dizenin özelliğine .operatörle eriştiğinizde özelliklere sahip olur, çünkü kutulama oluşur, ancak bundan sonra, ek hiçbir şey eklenmemiş bir değişmezdir, çünkü yazdırdığınızda "The cat is very grumpy", yalnızca değeri yazdırın ve hiçbir şey Daha. ilkel değişmez değerleri her zaman özelliklere sahip nesneler değildir, yalnızca kutu içine alındığında nesnelerdir.