Странный 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, время: 06:39. |