Помогите разобраться как работает этот скрипт
<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> |
Обьяснюсь: было скучно, стало интересно разберусь ли в таком месиве.
Взял на себя труд привести код в более читабельный вид. Но тут возникла пара вопросов 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){Почему дебаггер не детектирует ошибку синтаксиса? Если синтаксис не нарушен - как это работает? Как такую функцию вызвать? |
Для ТС: Поидее этот скрипт добавляет в документ пару тэгов script, после запуска этой функции. Только тут ошибки есть. Как минимум пробел лишний вот тут
t .onload=functionпосле t не должно быть пробела. upd: Вот это новость для меня - этот пробел не приводит к ошибке синтаксиса, а я то думал что так вообще нельзя ;) |
aklis,
24 строка точка с запятой лишняя |
Цитата:
|
Цитата:
|
mikhail apalaev,
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Точка с запятой лишняя потому что запись должна быть такая?
//представим что тут 23 строка }(window,document, scr) В скобках параметры которые получит функция при вызове? |
Точно параметры, ничем другим то быть не может. Спасибо Рони, за науку.
|
Часовой пояс GMT +3, время: 08:05. |