Bu jQuery hattını anlamak

JQuery 1.7rc1'in 3906

expando = "sizcache" + (Math.random() + '') .replace ('.', ''),

+ '' kullanımının anlamını anlamıyorum. Yukarıdaki eşdeğer değil

expando = ("sizcache" + Math.random ()). değiştir ('.', ''),

2
evet, bir sayı yerine yapamazsın
katma yazar Tules, kaynak
Orijinal jQuery yolu teoride daha hızlıdır. String değiştirme performansı hemen hemen giriş stringinin uzunluğuna bağlıdır. Girişin dize uzunluğuna, bilmeniz gereken verileri eklemek, değiştirilmesi gerekmeyen doğrudan, ancak küçük bir performans kaybıdır. Bu kod satırına önemli bir miktar denirse, performans tasarrufu göze çarpabilir.
katma yazar Rob, kaynak

6 cevap

+ '' is to convert it to a string - it allows replace to work.

Boyut metni bir içerecek şekilde değiştirildiyse, aynı değildir.

"sizcache." + (Math.random() + '').replace('.', '') != ("sizcache." + Math.random() + '').replace('.', '')

Örneğin.

6
katma
Ancak bekleyin, 'sizcache' bir dizedir, bu nedenle dizgeye dönüşüm zaten gerçekleşmiş olmalı.
katma yazar Randomblue, kaynak
tam olarak aynı değil. Bu da aynı olurdu: ("sizcache" + Math.random ()). İçinde o zaman oluşturulan bir hata olurdu
katma yazar Ross Dargan, kaynak
sizcache, .replace yöntemi çağrılana kadar rastgele sayı ile birleştirilmez. Ancak, ikinci kod satırınızın aynı sonucu vermesi konusunda haklısınız.
katma yazar Blazemonger, kaynak

Evet haklısın. Bunu yapmanın başka bir yolu.

3
katma
"sizcache", içinde anlamlı ondalık basamakları olabilecek dinamik bir dize ise? : P
katma yazar jbabey, kaynak
+1 Soruyu cevaplamak için.
katma yazar Mirthquakes, kaynak

Sayıdan dize dönüştürmek için "+ ''" kullandıklarına inanıyorum.

1
katma
Dize dönüştürme işlemimiz zaten var!
katma yazar Randomblue, kaynak

Evet, yönteminiz aynı sonucu verecektir.

+ '' kısmı, sayıyı bir dizgeye yayınlamak için kullanılır. Daha sonra bu dizgede replace işlevi çağrılır ve sizcache dizesi hazırlanır.

Bununla birlikte, yönteminizle önce bu dizeyi numaraya eklersiniz (ve işlemdeki sayıyı dizeye dönüştürürsünüz), sonra her şeyde replace . Sadece noktaları kaldırdığınız için, sonuç aynıdır.

0
katma

Aynı şey değil. Sürümlerinde rastgele bir sayı alıyorlar, boş bir dize birleştirerek, noktayı kaldırarak ve sonra sizcache ekini ekleyerek bir dizgeye dönüştürüyorlar. Sürümünüz rastgele bir sayıya sizcache ekler, ardından noktayı kaldırır.

Sonuç olarak, sonuç aynıdır, ancak siz.cache gibi bir nokta içeriyorsa diyelim ki başka bir dize değerinden farklı olabilir.

0
katma
sizcache 'in bir nokta içerebileceğini mi söylüyorsunuz?
katma yazar Randomblue, kaynak
Bu durumda, olmayabilir , bu bir string değişmez. Ancak, gelecekte olabilir ve içinde nokta olan bir şey için yeniden düzenlenebilir ve kod yine de çalışır.
katma yazar Alex Turpin, kaynak

Math.random() öğesinin döndürülen değerini karakter dizisi olarak kullanmanın hızlı bir yolu olabileceğini düşünüyorum, bu nedenle replace() kullanılabilir.

0
katma
Dize dönüştürme işlemi zaten yapıldı.
katma yazar Randomblue, kaynak