Способ, которым я справляюсь, - это только сохранить 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>';
Вы можете избежать необходимости избегать кавычек, используя противоположные одинарные или двойные кавычки из приведенных в строке.
Для преобразования в целое число просто используют унарное + оператор, это должен быть самый быстрый путь:
var int = +string;
Преобразования в другие типы могут быть сделаны подобным образом:
var string = otherType + "";
var bool = !!anything;
Преобразование типа в JavaScript сделано через функции конструктора встроенных типов без new
, т.е.
foo.bar = Number(foo.bar);
Это отличается от parseInt()
несколькими способами:
NaN
если объекты больше, Вы могли бы попробовать JSON, это - введенный формат, таким образом, Вы не должны преобразовывать значения.
Насколько медленный это может быть? Сколько раз в секунду называет этот процесс? Сколько различные числовые возвращаемые значения там? Я хлестал вместе сценарий и протестировал 100 000 чисел. Парсинг их от строк взял 687 мс. Поиск их в массиве взял 541 мс. Это - очень маленькое улучшение. Я соглашаюсь с другими плакатами. Вы не можете поправиться, чем собственный parseInt () метод.
Вы не собираетесь поправляться, чем parseInt, но реальная ошибка - то, что PHP обеспечивает то, что, как предполагается, является числом как строкой.
И так же к тому, что Daniel сказал - не идут, ища микрооптимизации как это, пока Вы не сравнили своего кода и обнаружили, что это стоит сделать.
Бросьте его к интервалу в PHP перед Вами json_encode()
это:
$foo->bar = (int)$foo->bar;
print('var foo = ' . json_encode($foo));
Кстати, при использовании parseInt это - хорошая практика, чтобы всегда указать второй параметр, если Вы действительно не хотите, чтобы строка, запускающаяся с 0, была интерпретирована как восьмеричные и так далее:
parseInt('010', 10); // 10
Конструктор Числа также существует, но это должно совпасть с 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.
Кастинг является крошечным битом быстрее, чем парсинг, но медленнее, чем поиск.
Кроме того, в Firefox самый быстрый метод оказывается parseInt () сопровождаемый путем поиска. Firefox также оказался в 6 раз быстрее в среднем, чем IE. Интересный.
Классная идея с помощью унарного оператора. В Firefox, который оказался сопоставимым с parseInt (). В IE это оказалось самым быстрым методом.
Прежде всего Вы на самом деле зарегистрировали это, это медленно и вызывает проблемы? Иначе я не потрудился бы искать решение, потому что действительно нет проблемы.
Во-вторых, я предположил бы, что, так как parseInt является собственный JS-метод, он был бы реализован способом, который очень быстр, и вероятно на родном языке VM (вероятно, C, в зависимости от browser/VM). Я думаю, что Вы могли испытать некоторые затруднения при создании более быстрого метода из чистого JS.=)
Конечно, я не гуру JS, таким образом, я не знаю наверняка, но это - то, что моя интуиция говорит мне и имеет тенденцию быть стандартным ответом на, "как я сделал бы более быструю альтернативу для libraryFunction ()?" вопросы.