Ushbu jQuery liniyasini tushunish

JQuery 1.7rc1 ning 3906 liniyasi

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

+ "" dan foydalanish nuqtasini tushunmayapman. Yuqoridagi tenglama emas

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

2
Ha, siz raqamni almashtira olmaysiz
qo'shib qo'ydi muallif Tules, manba
Asl jQuery usuli, nazariy jihatdan tezroq. String o'zgarishi ishlashning to'g'ridan-to'g'ri kirish satrining uzunligiga bog'langan. Kirishning mag'lubiyatga uzunligini kiritishingiz kerak bo'lgan ma'lumotlar bilan almashtirish to'g'ridan-to'g'ri, ammo kichik, ishlash halokatidir. Agar ushbu kodlar qatori ishlashni tejash sezilarli darajada ko'payishi mumkin bo'lsa, deyiladi.
qo'shib qo'ydi muallif Rob, manba

6 javoblar

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

Agar o'lchamning matni o'zgarmagan bo'lsa, xuddi shunday emas.

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

misol uchun.

6
qo'shib qo'ydi
Lekin kuting, 'sizcache' - bu mag'lubiyatdir, shuning uchun mag'lubiyatga aylanish allaqachon sodir bo'lishi kerak.
qo'shib qo'ydi muallif Randomblue, manba
bir xil emas. Bu xuddi shunday bo'ladi: ("sizcache" + Math.random ()), agar (".", "'') O'zgartirsa, lekin matn o'lchovi o'zgartirilgan bo'lsa, o'zgartirilsin. unda u yaratilgan xato bo'ladi
qo'shib qo'ydi muallif Ross Dargan, manba
sizcache, .replace usuli chaqirilguniga qadar tasodifiy raqam bilan biriktirilmagan. Biroq, siz kodning ikkinchi satriga munosib natija berganligida siz haqsiz.
qo'shib qo'ydi muallif Blazemonger, manba

Ha, siz haqsiz. Buni amalga oshirishning yana bir yo'li.

3
qo'shib qo'ydi
"sizcache" tarkibida o'nli nuqta bo'lishi mumkin bo'lgan dinamik bir satr bo'lsa nima bo'ladi? : R.
qo'shib qo'ydi muallif jbabey, manba
Savolga javob berish uchun.
qo'shib qo'ydi muallif Mirthquakes, manba

"+" "" "Dan raqamni bir qatorga aylantirish uchun foydalanayotganligiga ishonaman.

1
qo'shib qo'ydi
Biz allaqachon mag'lubiyatga aylantirdik!
qo'shib qo'ydi muallif Randomblue, manba

Ha, sizning usulingiz xuddi shu natijani beradi.

+ '' qismi raqamni mag'lubiyatga chiqarish uchun ishlatiladi. Keyin replace funktsiyasi shu satrda chaqiriladi va sizcache qatoriga qo'shiladi.

Shu bilan birga, metodingiz bilan birinchi navbatda ushbu qatorni raqamga qo'shamiz (va raqamni jarayonda mag'lubiyatga aylantiramiz), so'ng barcha narsada replace ni chaqirib olasiz. Siz faqat nuqtalarni olib tashlayapsiz, natijada bir xil bo'ladi.

0
qo'shib qo'ydi

Xuddi shu narsa emas. O'z versiyasida ular tasodifiy sonni oladi, uni bo'sh satrni birlashtirib, nuqta chiqarib, keyin sizcache ilovasini qo'shib, uni mag'lubiyatga aylantiradi. Versiyangiz tasodifiy songa sizcache ni qo'shib, keyin nuqta o'chiriladi.

To'g'ri, yakuniy natijalar bir xil, ammo boshqa kod qiymatlari bilan farq qilishi mumkin, masalan you.cache kabi nuqta bo'lsa.

0
qo'shib qo'ydi
Siz sizcache da nuqta bo'lishi mumkinligini aytdingizmi?
qo'shib qo'ydi muallif Randomblue, manba
Bu holda may bo'lishi mumkin emas, bu mag'lubiyatning literali. Biroq, kelajakda kelajakda u erda nuqta bilan ishlaydigan narsalar uchun takrorlanishi mumkin va kod hali ham ishlaydi.
qo'shib qo'ydi muallif Alex Turpin, manba

Math.random() ning qaytib keladigan qiymatini bir belgi dizesi sifatida yuborishning tez yo'li bo'lishi mumkin deb o'ylayman, shuning uchun replace() foydalanish mumkin.

0
qo'shib qo'ydi
Stringni o'tkazish allaqachon amalga oshirilgan.
qo'shib qo'ydi muallif Randomblue, manba