#javascript #синтаксис #замыкания
Есть код на JavaScript: "use strict"; var site = (function () { var loader_html = ''; var loader_image_width = 100; var loader_image_height = 100; return { window_subroutines : { get_scrollTop : function () { return (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop); }, get_scrollLeft : function () { return (document.documentElement && document.documentElement.scrollLeft) || (document.body && document.body.scrollLeft); }, get_clientWidth : function () { return (document.documentElement && document.documentElement.clientWidth) || (document.body && document.body.clientWidth); }, get_clientHeight : function () { return (document.documentElement && document.documentElement.clientHeight) || (document.body && document.body.clientHeight); } }, loader : { show : function () { var loader_elem = document.getElementById ("loader_container"); var left_coord = Math.round(site.window_subroutines.get_scrollLeft() + ( site.window_subroutines.get_clientWidth() / 2 ) - ( loader_image_width / 2 )) + "px"; var top_coord = Math.round(site.window_subroutines.get_scrollTop() + ( site.window_subroutines.get_clientHeight() / 2 ) - ( loader_image_height / 2 )) + "px"; loader_elem.innerHTML = loader_html; loader_elem.style.top = top_coord; loader_elem.style.left = left_coord; loader_elem.style.display = "block"; }, hide : function () { setTimeout("document.getElementById('loader_container').style.display = 'none';", 750); } } }; })(); Проблема в том, что при попытке его выполнить браузер выводит ошибку: SyntaxError: function statement requires a name get_scrollTop : function () { return (document.documentElement && document.docum... Посмотреть живьём это можно на jsfiddle
Ответы
Ответ 1
Надо изменить return { на return { JavaScript добавляет ; в конец строка автоматическим образом, так что код распарсится так: return; { // блок кода window_subroutines: // метка { // блок кода get_scrollTop : // метка function () { /* ... */ } // SyntaxError: декларация функции без имени (Смотрите в спецификации о инструкциях с метками и автоматической подстановке точки с запятой)
Комментариев нет:
Отправить комментарий