Цитата:
	
	
		
			 
			
				
					Сообщение от Zeroglif
					
				 
				неактивные уже отметились типа меня 
			
			 
		 | 
	
	
 Да ладно, я сам очень редко создаю темы (наверное, всего третья за всё время) ;) Эта просто поинтересней была.
	Цитата:
	
	
		
			 
			
				
					Сообщение от Kolyaj
					
				 
				Ждем откровений. 
			
			 
		 | 
	
	
 
	Цитата:
	
	
		
			 
			
				
					Сообщение от Zeroglif
					
				 
				пиши уж ) 
			
			 
		 | 
	
	
 Ну ладно, раз больше никто не хочет высказать свои предположения...
Большинство (включая меня ;)) в первую секунду подумали, что вопрос простецкий и связан с IE (тот случай, когда IE маппит id-шники в глобальную область). Но нет, данное поведение воспроизводится во всех браузерах (к тому же, задан атрибут "name", а не "id").
Но в отладчике всё быстро прояснилось.
Дело связано с наличием формы. Функция, создаваемая из кода атрибута "onclick", порождается в контексте, scope chain которого содержит объект input-a и объект-формы. Соответственно, весь этот scope chain запоминается в onclick-функцию свойством [[Scope]]. Далее, при активации функции, создаётся её собственный Scope chain (AO контекста + [[Scope]]), где и происходит разрешение имён идентификаторов.
Если вставить вызов отладчика
<input ... onclick="debugger; alert(test === this);" />
 и посмотреть Scope chain контекста, то мы увидим там пять объектов:
0. Call event=Event click
1. input Test
2. form (где |test| - это input-элемент)
3. Document
4. Window (где |test| - это глобальная функция)
Ну, а разрешение имени происходит из самого глубокого звена цепи, и вверх. Соответственно, имя 
test будет найдено на (3)-ем шаге, в пункте (2), т.е. в объекте формы, и значением будет является input-элемент.
Если удалить форму, то ошибки не будет (т.е. атрибут name может свободно называться, как функция), т.к. в Scope chain-e не будет формы, и имя test будет разрешено в глобальном объекте.
P.S.> Оригинальный вопрос и ответ в c.l.js - 
http://groups.google.ru/group/comp.l...11199a44?hl=en