Я бы пошел на 3: нет window
за исключением нескольких исключений.
В браузерах window
относится к глобальной области видимости. window.
как в window.prompt()
является избыточным. Вы можете использовать его, чтобы подчеркнуть, что prompt()
- это метод объекта window
.
Я бы никогда не использовал что-то вроде window.Math
или window.NaN
, потому что эти свойства являются глобальными объектами, которые не имеют ничего общего с объектом window
, который случайно является глобальным объектом в браузерах. См. Также Глобальные свойства и функции, определенные в ECMAScript .
Если у вас есть другая переменная в текущей (локальной) области с именем prompt
, вам также понадобится префикс window.
, чтобы получить диалоговое окно приглашения, как в:
(function() {
var prompt = "Give me your name!";
var name = window.prompt(prompt, "your name");
})();
Для установки глобальных переменных вы также должны добавить префикс window.
, чтобы удовлетворить такие инструменты, как jslint . (в противном случае это выглядело бы так, будто вы забыли ключевое слово var
и, таким образом, случайно пропустили переменную в глобальной области видимости):
(function() {
// "WRONG"
somevar = 1;
// You probably want to set a local variable, so should use:
var somevar = 1;
// take away the confusion, you really wanted to set a global variable:
window.somevar = 1;
})();
Как правило, пропуск window.
улучшает читабельность, учитывая следующий пример:
window.setInterval(function() {
var numA = window.parseInt(window.document.getElementById("numA").value, 10);
var numB = window.parseInt(window.document.getElementById("numB").value, 10);
window.document.getElementById("avg").value = window.Math.floor((numA + numB) / 2);
}, 1000);