jQueryのこのラインを理解する

jQuery 1.7rc1の3906行目は

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

私は + '' を使用する点を理解していません。上記と等価ではない

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

2
ええ、あなたは番号で置き換えることはできません
追加された 著者 Tules,
元のjQueryの方法は、理論的には、より高速です。文字列置換のパフォーマンスは、入力文字列の長さに直接結びついています。置き換える必要がないことが分かっているデータを含む入力の文字列長に追加することは、直接的ではあるがパフォーマンスの低下を最小限に抑えることです。このコード行がかなりの量で呼び出されると、パフォーマンスの節約が顕著になる可能性があります。
追加された 著者 Rob,

6 答え

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

サイズのテキストがaを含むように変更された場合は同じではありません。

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

例えば。

6
追加された
しかし、「sizcache」は文字列なので、文字列への変換はすでに行われているはずです。
追加された 著者 Randomblue,
全く同じではありません。これは同じである:( "sizcache" + Math.random())。replace( '。'、 '')しかし、テキストsizecacheが変更された場合、それにはバグがあります
追加された 著者 Ross Dargan,
sizcacheは、 .replace メソッドが呼び出されるまで乱数と結合されません。しかし、2行目のコードで同等の結果が得られたことは間違いありません。
追加された 著者 Blazemonger,

はい、あなたが正しい。それを行う別の方法。

3
追加された
「sizcache」が意味のある小数点を含む動的文字列の場合はどうなりますか? :P
追加された 著者 jbabey,
+1質問に答えるため。
追加された 著者 Mirthquakes,

私は数字から文字列に変換するために "+" '"を使っていると思います。

1
追加された
私たちはすでに文字列変換をしています!
追加された 著者 Randomblue,

はい、あなたのメソッドは同じ結果を生成します。

数字を文字列にキャストするには、 + '' 部分を使用します。次に、その文字列に対して replace 関数が呼び出され、 sizcache 文字列が先頭に追加されます。

しかし、あなたのメソッドでは、最初にその文字列を数値に追加し(そしてその数値を文字列に変換して)、全体を replace を呼び出します。ドットを削除するだけなので、結果は同じです。

0
追加された

それは同じことではありません。それらのバージョンでは、乱数を取得して空の文字列を連結して文字列に変換し、ドットを削除してから sizcache を付加します。あなたのバージョンでは乱数に sizcache が追加され、ドットが削除されます。

与えられた最終結果は同じですが、 siz.cache のようなドットが含まれていたとすると、別の文字列値と異なる可能性があります。

0
追加された
sizcache にドットが含まれている可能性がありますか?
追加された 著者 Randomblue,
この場合、可能性はありません、文字列リテラルです。しかし、将来的にはドットが入っているものに対してはできますことができます。コードは引き続き動作します。
追加された 著者 Alex Turpin,

Math.random()の戻り値を文字列としてキャストすると、 replace()を使うことができると思います。

0
追加された
文字列変換は既に行われています。
追加された 著者 Randomblue,