Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.02.2016, 19:08
Профессор
Отправить личное сообщение для s24344 Посмотреть профиль Найти все сообщения от s24344
 
Регистрация: 12.08.2015
Сообщений: 206

setTimeout и область видимости
Здравствуйте. Подскажите, пожалуйста ответы на следующие вопросы.
Первый: Почему в данном примере, если использовать переменную degrees не как глобальную, а как локальную в контексте функции, то код работать не будет?
Второй: Какой из вариантов, с точки зрения оформления и синтаксиса корректнее (setTimeout)
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title></title>
	<style>
		#image {
			width: 200px;
			height: 200px;
			background: #359FBC;
			margin: 80px auto;
		}
		h2 {
			width: 200px;
		}
	</style>
</head>
<body>
	<div id="image"></div>
	<h2 id="status"></h2>

<script src="main.js"></script>
</body>
</html>


var looper;
var degrees = 0;

function rotateAnimation(el, speed) {
    // var degrees = 0;
    
    var elem = document.getElementById(el);

    elem.style.WebkitTransform = "rotate("+degrees+"deg)";
  
    // setTimeout('rotateAnimation(\''+el+'\','+speed+')',speed);

    setTimeout(function() {
        rotateAnimation(el, speed);
    }, 30);

    degrees++;

    if (degrees > 359) {
        degrees = 1;
    }

    document.getElementById("status").innerHTML = "rotate("+degrees+"deg)";
}

rotateAnimation("image", 30);
Ответить с цитированием
  #2 (permalink)  
Старый 13.02.2016, 19:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,081

Сообщение от s24344
как локальную в контексте функции, то код работать не будет?
потому что переменная будет каждый раз создаваться заново
Ответить с цитированием
  #3 (permalink)  
Старый 14.02.2016, 07:33
Профессор
Отправить личное сообщение для s24344 Посмотреть профиль Найти все сообщения от s24344
 
Регистрация: 12.08.2015
Сообщений: 206

Спасибо
Ответить с цитированием
  #4 (permalink)  
Старый 14.02.2016, 07:34
Профессор
Отправить личное сообщение для s24344 Посмотреть профиль Найти все сообщения от s24344
 
Регистрация: 12.08.2015
Сообщений: 206

На счет второго вопроса, не скажите своего мнения?
Ответить с цитированием
  #5 (permalink)  
Старый 14.02.2016, 16:37
hhh hhh вне форума
Профессор
Отправить личное сообщение для hhh Посмотреть профиль Найти все сообщения от hhh
 
Регистрация: 19.11.2013
Сообщений: 150

s24344,
Эта функция сама себя вызывает из-за метода setTimeout? Какую главу на эту тем почитать?
Ответить с цитированием
  #6 (permalink)  
Старый 17.02.2016, 03:43
Аватар для GayCoder
Аспирант
Отправить личное сообщение для GayCoder Посмотреть профиль Найти все сообщения от GayCoder
 
Регистрация: 28.01.2016
Сообщений: 99

vanished

Последний раз редактировалось GayCoder, 02.08.2020 в 16:16.
Ответить с цитированием
  #7 (permalink)  
Старый 17.02.2016, 04:25
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от s24344
На счет второго вопроса, не скажите своего мнения?
setTimeout c функцией удобнее в случаях передачи своей переменной из родительской функции, в контенте которой она запускается, либо сложная или многострочная обработка аргументов внутри setTimeout.

Последний раз редактировалось Deff, 17.02.2016 в 04:28.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Область видимости при роутинге Wizlight Angular.js 2 10.11.2015 06:55
Помогите пож с JSON, передача id ссылки. wisma jQuery 22 10.02.2014 15:36
область видимости Ultimatum Общие вопросы Javascript 2 19.06.2011 10:47
Область видимости Moonlight Events/DOM/Window 6 18.05.2011 23:25
можно ли включить функцию в глобальную область видимости из файла maxval Элементы интерфейса 13 04.10.2009 07:11