Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.02.2012, 13:12
Новичок на форуме
Отправить личное сообщение для yuri.gordeev Посмотреть профиль Найти все сообщения от yuri.gordeev
 
Регистрация: 19.08.2010
Сообщений: 3

Простой вопрос
Всем привет,
простейший вроде бы пример, вопрос почему вываливается ошибка
Uncaught TypeError: Property 'foo' of object [object DOMWindow] is not a function

var foo=100;

function foo(){
    alert('Hello,world!');
};
    
foo();



Ссылка на песочницу: http://learn.javascript.ru/play/etPJS


Спасибо, всем, заранее
Ответить с цитированием
  #2 (permalink)  
Старый 10.02.2012, 13:22
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

поставьте перед вызовом foo() строку
alert(typeof foo)
Ответить с цитированием
  #3 (permalink)  
Старый 10.02.2012, 13:27
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

А зачем вы и функцию и переменную одним именем назвали?
Ответить с цитированием
  #4 (permalink)  
Старый 10.02.2012, 13:51
Новичок на форуме
Отправить личное сообщение для yuri.gordeev Посмотреть профиль Найти все сообщения от yuri.gordeev
 
Регистрация: 19.08.2010
Сообщений: 3

Pavel M.,
typeof(foo)
говорит Number

Kolyaj,
интересно просто с точки зрения JavaScript почему так получается
если сделать
var foo=1;
var foo=function(){};


то всё ок.

Последний раз редактировалось yuri.gordeev, 10.02.2012 в 13:51. Причина: не дописал:)
Ответить с цитированием
  #5 (permalink)  
Старый 10.02.2012, 14:05
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

Сообщение от yuri.gordeev
var foo=function(){};
И
function foo() {}

Две большие разницы. В первом случае, значение переменной присваивается, когда выполнение доходит до этой строки. Во втором случае, функция, в каком бы месте она не находилась в рамках контекста, создаётся сразу при входе в контекст.

В вашем случае, создаётся вначале функция, а затем значение переменной заменяется на другое. Всё верно.

Последний раз редактировалось GuardCat, 10.02.2012 в 14:33.
Ответить с цитированием
  #6 (permalink)  
Старый 10.02.2012, 14:31
Новичок на форуме
Отправить личное сообщение для yuri.gordeev Посмотреть профиль Найти все сообщения от yuri.gordeev
 
Регистрация: 19.08.2010
Сообщений: 3

Спасибо, теперь всё встало на свои места
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простой вопрос по событиям kent666 Общие вопросы Javascript 5 28.04.2011 12:54
Простой вопрос - как запросить страницу НЕ ИЗ кэша kefi AJAX и COMET 1 20.09.2010 15:26
Простой вопрос по JavaScript. Работа с датой. Помогите Hanuman Общие вопросы Javascript 3 30.07.2010 20:30
Простой вопрос onClick alex2001 Элементы интерфейса 3 11.07.2010 18:19
Простой вопрос по jquery Grienders jQuery 1 28.01.2010 14:52