Цитата: 
	
 Цитата: 
	
 Цитата: 
	
 Я бы лучше сделал как-то так: 
<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, время: 18:55. |