Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.05.2016, 19:57
Интересующийся
Отправить личное сообщение для mikhail apalaev Посмотреть профиль Найти все сообщения от mikhail apalaev
 
Регистрация: 15.10.2015
Сообщений: 13

Помогите разобраться как работает этот скрипт
<script>var scr = {"scripts":[
{"src" : "js/libs.js", "async" : false},
{"src" : "js/common.js", "async" : false}
]};!function(t,n,r){"use strict";var c=function(t){if("[object Array]"!==Object.prototype.toString.call(t))return!1;for (var r=0;r<t.length;r++){var c=n.createElement("script"),e=t[r];c.src=e.src,c.async=e.async,n.body.appendChild(c) }return!0};t.addEventListener?t.addEventListener(" load",function(){c(r.scripts);},!1):t.attachEvent? t.attachEvent("onload",function(){c(r.scripts)}):t .onload=function(){c(r.scripts)}}(window,document, scr);
</script>
Ответить с цитированием
  #2 (permalink)  
Старый 31.05.2016, 21:10
Кандидат Javascript-наук
Отправить личное сообщение для aklis Посмотреть профиль Найти все сообщения от aklis
 
Регистрация: 27.04.2015
Сообщений: 99

Обьяснюсь: было скучно, стало интересно разберусь ли в таком месиве.
Взял на себя труд привести код в более читабельный вид. Но тут возникла пара вопросов
var scr = {"scripts":[
      {"src" : "js/libs.js", "async" : false},
      {"src" : "js/common.js", "async" : false}
   ]};

  !function(t,n,r){
    "use strict";
    var c=function(t){
      if("[object Array]"!==Object.prototype.toString.call(t)) return!1;

	  for (var r=0;r<t.length;r++){
	    var c = n.createElement("script"), e = t[r];
	    c.src = e.src, c.async = e.async, n.body.appendChild(c); 
	   }

	  return !0
	};

    t.addEventListener ? t.addEventListener(" load",function(){c(r.scripts);},!1) :
    t.attachEvent ? t.attachEvent("onload",function(){c(r.scripts)}) :
    t.onload=function(){
      c(r.scripts)
    }
  };
  (window,document, scr);



Что это вообще за объявление такое?
!function(t,n,r){
Почему дебаггер не детектирует ошибку синтаксиса? Если синтаксис не нарушен - как это работает? Как такую функцию вызвать?

Последний раз редактировалось aklis, 31.05.2016 в 21:16.
Ответить с цитированием
  #3 (permalink)  
Старый 31.05.2016, 21:23
Кандидат Javascript-наук
Отправить личное сообщение для aklis Посмотреть профиль Найти все сообщения от aklis
 
Регистрация: 27.04.2015
Сообщений: 99

Для ТС: Поидее этот скрипт добавляет в документ пару тэгов script, после запуска этой функции. Только тут ошибки есть. Как минимум пробел лишний вот тут
t .onload=function
после t не должно быть пробела.

upd:
Вот это новость для меня - этот пробел не приводит к ошибке синтаксиса, а я то думал что так вообще нельзя

Последний раз редактировалось aklis, 31.05.2016 в 21:26.
Ответить с цитированием
  #4 (permalink)  
Старый 31.05.2016, 21:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

aklis,
24 строка точка с запятой лишняя
Ответить с цитированием
  #5 (permalink)  
Старый 31.05.2016, 21:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Сообщение от aklis
Что это вообще за объявление такое?
замена круглых скобок, чтобы исполнить анонимную функцию
Ответить с цитированием
  #6 (permalink)  
Старый 31.05.2016, 21:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Сообщение от aklis
Только тут ошибки есть. Как минимум пробел лишний вот тут t .onload=function
нету ошибок, есть неформатированный код
Ответить с цитированием
  #7 (permalink)  
Старый 31.05.2016, 22:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

mikhail apalaev,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #8 (permalink)  
Старый 31.05.2016, 23:29
Кандидат Javascript-наук
Отправить личное сообщение для aklis Посмотреть профиль Найти все сообщения от aklis
 
Регистрация: 27.04.2015
Сообщений: 99

Точка с запятой лишняя потому что запись должна быть такая?
//представим что тут 23 строка
}(window,document, scr)

В скобках параметры которые получит функция при вызове?
Ответить с цитированием
  #9 (permalink)  
Старый 31.05.2016, 23:39
Кандидат Javascript-наук
Отправить личное сообщение для aklis Посмотреть профиль Найти все сообщения от aklis
 
Регистрация: 27.04.2015
Сообщений: 99

Точно параметры, ничем другим то быть не может. Спасибо Рони, за науку.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться что делает это скрипт Cayse Общие вопросы Javascript 2 07.04.2016 23:22
ПОМОГИТЕ РАЗОБРАТЬСЯ КАК РАБОТАЕТ ЭТОТ СКРИПТ! mikhail apalaev Элементы интерфейса 15 03.12.2015 13:23
Подскажите, что делает (как работает) данный скрипт. aratkevich Ваши сайты и скрипты 5 31.08.2015 22:20
Помогите найти скрипт галереи, как на... fulltext Общие вопросы Javascript 2 29.10.2012 15:01
Почему скрипт не работает с данными, которые вернул другой скрипт? Rooner jQuery 3 20.09.2012 14:56