Это полезно при попытке проверить значения глобального объекта. Например, если GlobalObject
не определено, выдается ошибка:
if(GlobalObject) { // <- error on this line if not defined
var obj = new GlobalObject();
}
но это не выдает ошибку:
if(window.GlobalObject) { // Yay! No error!
var obj = new GlobalObject();
}
Аналогично с:
if(globalValue == 'something') // <- error on this line if not defined
if(window.globalValue == 'something') // Hurrah!
и
if(globalObj instanceof SomeObject) // <- error on this line if not defined
if(window.globalObj instanceof SomeObject) // Yippee! window.prop FTW!
Я бы не ожидал увидеть существенную разницу в производительности, и единственная другая причина, по которой вы могли бы это сделать, - убедиться, что вы действительно получаете значение из глобальной области (в случае, если значение было переопределено в текущей области) .