Цитата:
Цитата:
Цитата:
Я бы лучше сделал как-то так: <script> var startMoving; var stopMoving; (function() { "use strict"; var timer; //Зачем здесь сокращение? startMoving = function() { timer = setInterval(function moveButton() { var target = $("#startMovingButton"); var offset = parseInt(target.css("margin-left")) + 1; target.css("margin-left", offset + "px"); }); } stopMoving = function() { clearInterval(timer); } })(); </script> <button id="startMovingButton" onclick="startMoving();">Start moving</button> <button id="stopMovingButton" onclick="stopMoving();">Stop moving</button> А вообще-то для подобного рода инкапсуляции в JS существует система модулей - https://learn.javascript.ru/modules. |
Цитата:
|
Нет, var не ставится потому, что переменная с названием main и так уже объявлена с помощью function main(){}. Функции в JS - сущности первого класса и тоже хранятся через помещение в переменную.
Собственно, любая функция - это объект-инстанс класса Function, наследника класса Object и имеет все признаки обычного объекта: var func = function(){}; console.log(func.constructor == Function); // true console.log(func instanceof Object); //true func.property = 10; func.property++; console.log(func.property); //11; Что насчет присвоения в глобал с помощью опущения var - да, такой трюк раньше действительно был возможен, но начиная с ES5 он запрещен. В строгом режиме попытка обращения к необъявленной переменной сгенерирует ошибку. |
Erolast,
Это я понял. Объясните мне, зачем в коде рони main = main()? |
main = main() - перезапись переменной main результатом вызова функции, находящейся (потом уже находившейся) в этой переменной.
Зачем? Нахрена-то) |
Цитата:
Спасибо за вразумительное объяснение )) |
Часовой пояс GMT +3, время: 20:39. |