Цитата:
|
а может лучше заменить объявление функции на функциональное выражение? (var main = function () {...} )
|
Лучше. Переиспользовать переменную разными сущностями - это хрень какая-то. Не надо злоупотреблять динамической типизацией.
Цитата:
|
onclick='main()()'
|
Тьфу, да, точно.
Цитата:
|
А как на другую кнопку повесить функцию stopMove() ? Как из main() вернуть 2 функции?
|
Вот ты и начал натыкаться на грабли переусложнения.
Я бы лучше сделал как-то так:
<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.