Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.07.2014, 20:49
Аспирант
Отправить личное сообщение для Urukhay Посмотреть профиль Найти все сообщения от Urukhay
 
Регистрация: 04.07.2014
Сообщений: 51

Почему нижняя строчка срабатывает первей?
Может ли быть такое, что в JS нижняя строчка выполнится первей верхней?

Последний раз редактировалось Urukhay, 09.07.2014 в 20:55.
Ответить с цитированием
  #2 (permalink)  
Старый 09.07.2014, 20:58
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Да, например, в асинхронном коде
Код:
setTimeout(function(){console.log("first")})
console.log("second")
 
//second
//first
точней, тут все выполняется последовательно, но то что в коллбеке, выполняется позже.

Вот еще пример

test()
function test(){console.log("foo")}

тут ф-ция вызывается до того как она определена. Мож не совсем в кассу, но тоже в этом роде.

Последний раз редактировалось foo, 09.07.2014 в 21:03.
Ответить с цитированием
  #3 (permalink)  
Старый 09.07.2014, 21:08
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Urukhay, и да, и нет. С одной стороны:
function x() {
  alert("Эта строчка выше");
}

alert("Эта строчка ниже");
x();

С другой стороны, конечно, строки выполняются по порядку. Иначе это был бы просто хаос.

Другое дело, что вопрос скорее всего возник из-за асинхронности. Вот код:
var x= setTimeout(function () {
    return "test";
}, 0);

alert(x);

Многие новички думают, x == "test". А это не так. И чем раньше это станет очевидным, тем лучше. Потому что на этом построен js.
Ответить с цитированием
  #4 (permalink)  
Старый 09.07.2014, 21:16
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Sweet,
Что демонстрирует ваш первый пример? Это обычное поведение, нет там ничего особенного.
Ответить с цитированием
  #5 (permalink)  
Старый 09.07.2014, 21:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Urukhay,
функция анимате -- это несколько перемещений а не одно -- вот в промежуток между этими перемещениями и сработает функция css -- если вам нужно применить css в конце анимации для этого в animate есть параметр callback -- в функцию callback и поставьте ваше css
Ответить с цитированием
  #6 (permalink)  
Старый 09.07.2014, 22:19
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,493

рони, телепат?
__________________
29375, 35
Ответить с цитированием
  #7 (permalink)  
Старый 09.07.2014, 23:10
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от foo
test()
function test(){console.log("foo")}
тут ф-ция вызывается до того как она определена
не вводите в заблуждение людей и почитайте наконец учебники. На момент выполнения первой строки функция уже определена.
Функции, объявленные как Function Declaration, создаются интерпретатором до выполнения кода. Перед тем, как выполнять первую строку, интерпретатор сканирует код, ищет в нём Function Declaration и обрабатывает их.
Ответить с цитированием
  #8 (permalink)  
Старый 09.07.2014, 23:17
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от Aetae
рони, телепат?
Сообщение от Urukhay
Последний раз редактировалось Urukhay, Сегодня в 20:55.
до этого был код
Ответить с цитированием
  #9 (permalink)  
Старый 09.07.2014, 23:49
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

BETEPAH,
Не надо умничать. Речь тут идет с точки зрения UI. То что под капотом происходит юзера ниибет, капитан.
Ответить с цитированием
  #10 (permalink)  
Старый 09.07.2014, 23:53
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Сообщение от BETEPAH
до выполнения кода
И как ты себе это вообще представляешь, что реально функция вызывается до ее определения на уровне реализации? LOL.

Ясен пень, что на момент вызова она определена, как, мля, иначе может быть.

Последний раз редактировалось foo, 09.07.2014 в 23:58.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему onload срабатывает до того как картинка полностью проявится? koeshiro Общие вопросы Javascript 21 24.06.2013 14:50
почему событие срабатывает более одного раза garisson Элементы интерфейса 3 08.11.2012 05:22
Почему alert не срабатывает для несуществующей переменной? Почемучкин Общие вопросы Javascript 10 16.08.2012 09:32
Почему функция срабатывает один раз? Bogdan808 Javascript под браузер 4 06.09.2010 23:41
Почему скрипт срабатывает только после обновления страницы? Randomizer jQuery 2 01.09.2010 19:01