Понимание этой строки jQuery

Строка 3906 jQuery 1.7rc1

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 изменился, чтобы сказать, что a. в нем будет ошибка, созданная
добавлено автор Ross Dargan, источник
sizcache не объединяется со случайным числом до тех пор, пока не вызывается метод .replace . Тем не менее, вы правы в том, что ваша вторая строка кода дает эквивалентный результат.
добавлено автор Blazemonger, источник

Да, ты прав. Это еще один способ сделать это.

3
добавлено
что, если «sizcache» - это динамическая строка, которая может иметь значимые десятичные точки в ней? :П
добавлено автор jbabey, источник
+1 Для ответа на вопрос.
добавлено автор Mirthquakes, источник

Я считаю, что они используют «+» для преобразования из числа в строку.

1
добавлено
У нас уже есть преобразование строк!
добавлено автор Randomblue, источник

Да, ваш метод даст тот же результат.

Часть + '' используется для перевода числа в строку. Затем в этой строке вызывается функция replace и добавляется строка sizcache .

Однако с помощью вашего метода вы сначала добавляете эту строку в число (и преобразуете число в строку в процессе), а затем вызываете replace на все. Так как вы просто удаляете точки, результат будет таким же.

0
добавлено

Это не одно и то же. В их версии они получают случайное число, преобразуя его в строку, конкатенируя пустую строку, удаляя точку, затем appendign sizcache . Ваша версия добавляет sizcache к случайному числу, а затем удаляет точку.

Конечно, конечный результат тот же, но может потенциально отличаться от другого значения строки, скажем, если он содержит точку типа siz.cache .

0
добавлено
Вы говорите, что sizcache может содержать точку?
добавлено автор Randomblue, источник
В этом случае он может не, это строковый литерал. Тем не менее, может в будущем быть переделанным для чего-то с точкой в ​​нем, и код все равно будет работать.
добавлено автор Alex Turpin, источник

Я думаю, что это может быть быстрый способ вернуть возвращаемое значение Math.random() в качестве символьной строки, чтобы можно было использовать replace() .

0
добавлено
Преобразование строк уже выполнено.
добавлено автор Randomblue, источник
Верстка сайтов HTML/CSS/JS/PHP
Верстка сайтов HTML/CSS/JS/PHP
3 439 участник(ов)

Правила группы: напишите !rules в чате. Группа Вк: vk.com/web_structure Freelancer: @web_fl Веб Дизайн: @dev_design Маркетолог: @topmarkening Автор: @M_Boroda