Значение в переменной
Всем привет!
В видеокурсе Ильи, был примерчик примерно такого содержания
var name = "Вася";
function whatIsName() {
alert(name);
var name = "Петя";
}
whatIsName(); // здесь получаем undefined
Здесь все понятно почему. Если var name = "Петя"; объявить до Алерта, тогда получим "Петя" А не понятно следующее: Убираем эту строку var name = "Петя"; из функции. Итого у нас есть: 1. Глобальная переменная name 2. Функция декларейшн 3. Результат в алерте "Вася" Вопросы: почему если объявить нейм=вася после функции, результат не undefined, а тоже Вася? переменная ведь проинициализировалась и находится с undefined, и значение попадает уже после функции как и было с Петей
function whatIsName() {
alert(name);
// var name = "Петя";
}
whatIsName(); // ВАСЯ
var name = "Вася";
var name = "Вася";
function whatIsName() {
alert(name);
// var name = "Петя";
}
whatIsName(); // ВАСЯ
|
Цитата:
function whatIsName() {
alert(name);
}
whatIsName();
var name = "Вася";
|
Rise, у меня вообще тут дает "js-frame-highlighter_289918" :cray:
|
Цитата:
<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function whatIsName() {
alert(name);
}
whatIsName();
var name = "Вася";
</script>
</head>
<body>
</body>
</html>
|
Потому что свойство window.name
Для чистоты же эксперимента:
(function(){
function whatIsName() {
alert(name);
}
whatIsName();
var name = "Вася";
})();
Или же поменять имя переменной на другое:
function whatIsName() {
alert(_name);
}
whatIsName();
var _name = "Вася";
И да, тут на сайте при повторном просмотре окно остается прежним, так что результат будет уже другим. |
Сам натупился :)
все оказалось логичным |
| Часовой пояс GMT +3, время: 07:34. |