Помогите разобраться как работает этот скрипт
<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, время: 12:41. |