Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Подкажите я не ошибся это Javascript? (https://javascript.ru/forum/misc/79776-podkazhite-ya-ne-oshibsya-ehto-javascript.html)

koducej 23.03.2020 00:44

Подкажите я не ошибся это Javascript?
 
<!-- Google Analytics counter -->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-59536135-1']);
_gaq.push(['_trackPageview']);
_gaq.push(['_setCustomVar', 1, 'Domain', 'chatvdvoem.ru', 3]);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>

voraa 23.03.2020 07:21

Конечно.
А что заставляет сомневаться?

ksa 23.03.2020 07:47

Цитата:

Сообщение от koducej
var _gaq = _gaq || [];

А это сильно! :blink:

voraa 23.03.2020 08:02

Цитата:

Сообщение от ksa (Сообщение 521641)
А это сильно! :blink:

А что не так?
Если глобальная переменная уже определена, то использовать ее, иначе создать пустой массив и присвоить его этой переменной.

На глобальном уровне в нестрогом режиме можно сколько угодно писать
var _gaq;
и каждый раз новая переменная будет переопределять ту, что была определена раньше.

ksa 23.03.2020 09:35

Цитата:

Сообщение от voraa
Если глобальная переменная уже определена, то использовать ее, иначе создать пустой массив

В каком случае ты попадешь на страницу с той "определенной" глобальной переменной?

ksa 23.03.2020 09:37

voraa, вот тебе пример страницы...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='https://code.jquery.com/jquery-latest.js'></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
var _gaq = _gaq || [];
alert(_gaq);
</script>
</head>
<body>

</body>
</html>

Как сделать так, чтобы алерт показывал не пустой массив?

ksa 23.03.2020 09:40

Хотя... Можно, конечно, повторять масло масляное... :(
<script type='text/javascript'>
var _gaq = [1,2,3,4];
</script>
<script type='text/javascript'>
var _gaq = _gaq || [];
alert(_gaq);
</script>

voraa 23.03.2020 10:02

Цитата:

Сообщение от ksa (Сообщение 521648)
Хотя... Можно, конечно, повторять масло масляное... :(

Это не повторение масла масляного, а специальный прием.
Представим, что у нас может быть несколько довольно независимых скриптов, которые должны использовать общую переменную (обычно объект или массив).
Скрипты независимы, каких то может не быть, порядок скриптов тоже может быть различным. И как им тогда заводить и использовать эту переменную?
Только так

<script> // скрипт 1
var comm = comm || {};
comm.script1={par1:val1, par2:val};
</script>

<script> // скрипт 2
var comm = comm || {};
comm.script2={par1:val1, par2:val};
</script>

<script> // скрипт 3
var comm = comm || {};
comm.script3={par1:val1, par2:val};
</script>
...
<script> // скрипт последний
var comm = comm || {};
// А тут мы можем определить, какие скрипты были и что то сделать в зависимости от этого
if (comm.script1) {...}
if (comm.script2) {...}
if (comm.script3) {...}
</script>


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

<script> // скрипт 0
var comm = {};
</script>

как то не красиво, когда можно без него.

ksa 23.03.2020 12:41

Цитата:

Сообщение от voraa
Представим, что у нас может быть несколько довольно независимых скриптов, которые должны использовать общую переменную (обычно объект или массив).

Когда я так "представляю" - объявляю ее отдельно... :D
А не в каждом "не зависимом" скрипте.

ksa 23.03.2020 12:42

Цитата:

Сообщение от voraa
А писать в начале

<script> // скрипт 0
var comm = {};
</script>


как то не красиво,

У нас с тобой разное понятие красоты... ;)


Часовой пояс GMT +3, время: 08:05.