Разуменне гэтай лініі JQuery

Лінія 3906 з jQuery 1.7rc1 з'яўляецца

<�Код> Expando = "sizcache" + (Math.random() + '') .Надеть ( '', ''),

Я не разумею кропку, выкарыстоўваючы + «» . Не вышэй за эквівалентна

<�Код> Expando = ( "sizcache" + Math.random ()). Замяніць ( '', ''),

2
так, вы косяк рабіць замены па шэрагу
дададзена аўтар Tules, крыніца
Арыгінальны jQuery шлях, у тэорыі, хутчэй. Радок замены прадукцыйнасць у значнай ступені прывязаная непасрэдна да даўжыні уваходнай радка. Даданне да даўжыні радка ўваходных дадзеных з дадзенымі, вы ведаеце, не мае патрэбы ў замене з'яўляецца прамой, але невялікі, стратай прадукцыйнасці. Калі гэты радок кодаў выклікаецца значная колькасць, што эканомія прадукцыйнасці можа стаць прыкметнай.
дададзена аўтар Rob, крыніца

6 адказы

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

Гэта не тое ж самае, калі тэкст памеру зменены, каб уключыць.

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

напрыклад.

6
дададзена
Але чакаць, «sizcache» з'яўляецца радком, таму пераўтварэнне ў радок ўжо павінна адбыцца.
дададзена аўтар Randomblue, крыніца
не зусім тое ж самае. Гэта было б тое ж самае: ( «sizcache» + Math.random ()) замест ( "" «»), але калі тэкст sizecache зменены, каб сказаць ёсць .. у ёй тады было б памылкай створана
дададзена аўтар Ross Dargan, крыніца
sizcache ня спалучаецца з выпадковым лікам да пасля .Надеть метад выклікаецца. Тым не менш, вы маеце рацыю ў тым, што ваша другая радок кода дае эквівалентны вынік.
дададзена аўтар Blazemonger, крыніца

Так, вы маеце рацыю. Яшчэ адзін спосаб зрабіць гэта.

3
дададзена
што, калі «sizcache» ўяўляе сабой дынамічная радок, якая можа мець значную дзесятковую кропку ў ім? : P
дададзена аўтар jbabey, крыніца
+1 Для адказу на гэтае пытанне.
дададзена аўтар Mirthquakes, крыніца

Я лічу, што яны выкарыстоўваюць «+" "» для пераўтварэння колькасці ў радок.

1
дададзена
У нас ужо ёсць пераўтварэнне радкі!
дададзена аўтар Randomblue, крыніца

Так, ваш метад будзе вырабляць той жа вынік.

<�Код> + частка выкарыстоўваецца для прывядзення колькасці ў радок. Тады замяніць функцыя выклікаецца на гэтым радку і sizcache радок папярэднічаецца.

Тым не менш, з дапамогай метаду вы першы дадаўшы гэты радок на нумар (і пераўтварэнне колькасці ў радок у працэсе), то выклік замяніць на ўсёй рэчы. Так як вы толькі выдаленне кропак, вынік той жа.

0
дададзена

Гэта не тое ж самае. Па іх версіі, яны атрымліваюць выпадковы лік, ператвараючы яго ў радок з дапамогай канкатэнацыі пусты радок у ёй, выдаляючы кропку, затым appendign sizcache . Ваша версія дадае sizcache для выпадковага ліку выдаляе кропку.

Вядома, канчатковы вынік будзе той жа, але патэнцыйна можа быць розным іншым значэннем радкі, скажам, калі ён утрымоўвае кропку, як siz.cache .

0
дададзена
Вы кажаце, што sizcache можа ўтрымліваць кропку?
дададзена аўтар Randomblue, крыніца
У гэтым выпадку, <�я> можа </я> няма, гэта радковы литерал. Тым не менш, <�я> можа </я> у будучыні будзе repalced нешта з кропкай у ім, і код будзе працаваць.
дададзена аўтар Alex Turpin, крыніца

Я думаю, што гэта можа быць хуткі спосаб кінуць вернутае значэнне Math.random() у выглядзе радка знакаў, так што замяніць() можа быць выкарыстаны.

0
дададзена
Пераўтварэнне радкоў ўжо зроблена.
дададзена аўтар Randomblue, крыніца