альтернатива parseInt

Способ, которым я справляюсь, - это только сохранить Google UA в базе данных и жестко запрограммировать скрипт в файл. Поскольку скрипт должен вызываться на каждой странице, его можно легко разместить в системе шаблонов.

Пример:

$gUA = 'UA-11111-1';

    echo '<script async src="https://www.googletagmanager.com/gtag/js?id='.$gUA.'"></script>';
    echo '<script>';
      echo 'window.dataLayer = window.dataLayer || [];';
      echo 'function gtag(){dataLayer.push(arguments);}';
      echo "gtag('js', new Date());";

      echo "gtag('config', '".$gUA."');";
    echo '</script>';

Вы можете избежать необходимости избегать кавычек, используя противоположные одинарные или двойные кавычки из приведенных в строке.

10
задан shfx 27 February 2009 в 13:11
поделиться

9 ответов

Для преобразования в целое число просто используют унарное + оператор, это должен быть самый быстрый путь:

var int = +string;

Преобразования в другие типы могут быть сделаны подобным образом:

var string = otherType + "";
var bool = !!anything;

Подробнее.

38
ответ дан 3 December 2019 в 13:13
поделиться

Преобразование типа в JavaScript сделано через функции конструктора встроенных типов без new, т.е.

foo.bar = Number(foo.bar);

Это отличается от parseInt() несколькими способами:

  • начальные нули не инициируют восьмеричный режим
  • значения с плавающей точкой будут проанализированы также
  • целая строка анализируется, т.е. если она будет содержать дополнительные нечисловые символы, то возвращаемое значение будет NaN
12
ответ дан 3 December 2019 в 13:13
поделиться

если объекты больше, Вы могли бы попробовать JSON, это - введенный формат, таким образом, Вы не должны преобразовывать значения.

0
ответ дан 3 December 2019 в 13:13
поделиться

Насколько медленный это может быть? Сколько раз в секунду называет этот процесс? Сколько различные числовые возвращаемые значения там? Я хлестал вместе сценарий и протестировал 100 000 чисел. Парсинг их от строк взял 687 мс. Поиск их в массиве взял 541 мс. Это - очень маленькое улучшение. Я соглашаюсь с другими плакатами. Вы не можете поправиться, чем собственный parseInt () метод.

0
ответ дан 3 December 2019 в 13:13
поделиться

Вы не собираетесь поправляться, чем parseInt, но реальная ошибка - то, что PHP обеспечивает то, что, как предполагается, является числом как строкой.

И так же к тому, что Daniel сказал - не идут, ища микрооптимизации как это, пока Вы не сравнили своего кода и обнаружили, что это стоит сделать.

2
ответ дан 3 December 2019 в 13:13
поделиться

Бросьте его к интервалу в PHP перед Вами json_encode() это:

$foo->bar = (int)$foo->bar;
print('var foo = ' . json_encode($foo));

Кстати, при использовании parseInt это - хорошая практика, чтобы всегда указать второй параметр, если Вы действительно не хотите, чтобы строка, запускающаяся с 0, была интерпретирована как восьмеричные и так далее:

parseInt('010', 10); // 10
6
ответ дан 3 December 2019 в 13:13
поделиться

Конструктор Числа также существует, но это должно совпасть с parseInt с точки зрения скорости (как уже сказано, необходимо исправить часть PHP вместо JavaScript один так или иначе):

var i = "123";
i = new Number(i); // Number numeric wrapper
var j = "123";
j = Number(j); // Number primitive

BTW, если кому-то интересно, я искал любопытством V8 (Google Chrome) реализацию parseInt, и это находится здесь на коде Google.

2
ответ дан 3 December 2019 в 13:13
поделиться

Кастинг является крошечным битом быстрее, чем парсинг, но медленнее, чем поиск.

Кроме того, в Firefox самый быстрый метод оказывается parseInt () сопровождаемый путем поиска. Firefox также оказался в 6 раз быстрее в среднем, чем IE. Интересный.

Классная идея с помощью унарного оператора. В Firefox, который оказался сопоставимым с parseInt (). В IE это оказалось самым быстрым методом.

0
ответ дан 3 December 2019 в 13:13
поделиться

Прежде всего Вы на самом деле зарегистрировали это, это медленно и вызывает проблемы? Иначе я не потрудился бы искать решение, потому что действительно нет проблемы.

Во-вторых, я предположил бы, что, так как parseInt является собственный JS-метод, он был бы реализован способом, который очень быстр, и вероятно на родном языке VM (вероятно, C, в зависимости от browser/VM). Я думаю, что Вы могли испытать некоторые затруднения при создании более быстрого метода из чистого JS.=)

Конечно, я не гуру JS, таким образом, я не знаю наверняка, но это - то, что моя интуиция говорит мне и имеет тенденцию быть стандартным ответом на, "как я сделал бы более быструю альтернативу для libraryFunction ()?" вопросы.

8
ответ дан 3 December 2019 в 13:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: