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