Я немного смущен объектом окна JavaScript. Для начала рассмотрим следующие два объявления:
var imglobal = "I'm Global";
window.imglobal = "I'm Global";
Насколько я понимаю, это было бы точно так же (не так ли?) К нему можно получить доступ как "imglobal" или "window.imglobal" в обоих случаях. Я не понимаю почему, var объявляет локальные переменные, следующее не работает:
function imafunc() {
var imavar = "I'm a variable";
window.alert(imafunc.imavar);
}
Так почему же следующее?
var imavar = "I'm a variable";
window.alert(window.imavar);
Я наткнулся на это при использовании GWT; кажется, что всегда нужно явно явно ссылаться на объект окна ($ wnd там), вероятно, потому что это не «настоящий» объект окна, а какая-то песочница.
Это становится еще более запутанным с функциями, я знаю три способа объявить их:
var myfunc = function() { window.alert("Hello, World!"); }
window.myfunc = function() { window.alert("Hello, World!"); }
function myfunc() { window.alert("Hello, World!"); }
Есть ли техническая разница между этими тремя подходами?