Странный skope у функции
Доброго времени суток. На собеседовании задали вопрос:
var name = "Jonh"; function sayHi(){ alert(name); } setTimeout(function(){ var name = "Mike"; sayHi(); }, 1000); Что выведет console.log() - Jonh, или Mike? Ошибся сказав что Mike. Выводит Jonh. Тотально не понимаю поведения этого кода. Обьясните пожалуйста в чем дело. Желательно в деталях.:blink: |
7ver2009,
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
7ver2009,
вы создали две переменные, функция sayHi "видит" только первую переменную. если нужно вывести Mike, уберите создание второй переменной, подумайте что лишнее? |
Спасибо, вроде разобрался.
|
7ver2009,
var name = "Jonh"; function sayHi(){ alert(name); } setTimeout(function(){ name = "Mike"; sayHi(); }, 1000); |
Часовой пояс GMT +3, время: 20:37. |