JavaScript setInterval - PullRequest
       16

JavaScript setInterval

7 голосов
/ 01 марта 2011

Это пример из учебника о setInterval, но он недостаточно объясняет мой мозг новичка.Я был бы признателен, если бы вы могли ответить на эти вопросы

i) означает ли таймер 1000 миллисекунд, что функция moveElement будет запускаться каждую секунду?Другими словами, после того, как он запустится, он будет ждать 1 секунду, а затем снова запустит его?

ii) Цель moveElement - перемещать «redBox» на 10 пикселей влево при каждом запуске?Именно поэтому «px» используется в функции

iii) после первого запуска moveElement, заменяет ли новое значение для x (x + = 10) значение 0 в var x = 0?т.е. хранится ли он вне функции в переменной x в верхней части программы?

var x = 0;
setInterval(moveElement,1000);

function moveElement() {
  x+=10;
  var left = x + "px";
  document.getElementById("redbox").style.left=left;

Ответы [ 3 ]

8 голосов
/ 01 марта 2011

и) Да, по крайней мере, в теории.Однопоточная природа JavaScript ( в основном ) означает, что она не будет точно равна 1000 мс.

ii) Она перемещается на 10 пикселей вправо, добавляя 10 пикселей влево.Px - это сокращение от пикселей, то есть сокращение от элементов изображения.

iii) x определяется вне функции, поэтому оно сохраняется каждый раз.Каждый раз, когда вызывается функция, x будет на 10 больше.Если бы x было определено внутри функции, оно будет равно 10 при каждом вызове.

4 голосов
/ 01 марта 2011

i) setInterval будет запускать функцию moveElement каждую секунду.если бы он был setTimeout, он запустил бы его только раз в 1 секунду.

ii) похоже, вот что он делает.

iii) в этом случае x нигде не объявлен в функции moveElementзатем он пытается найти глобальную переменную, которую он делает вверху.Так что да, он будет хранить новое значение в х за пределами функции.

3 голосов
/ 01 марта 2011

i) Это поможет вам понять setTimeout и setInterval: http://www.elated.com/articles/javascript-timers-with-settimeout-and-setinterval/

ii) Добавлено «px» (это означает «пиксели»), чтобы назначить действительное значение атрибута для «style.left», который имеетединица «px».

iii) Да, оно заменяет значение, так как переменная x была объявлена ​​вне функции и, следовательно, является глобальной переменной.

...