vs_convoy
@vs_convoy

Почему возвращает window?

var func = function () { console.log(this)  };
func.call(null);

Никак не могу понять почему в консоль выводиться window, в чем тут логика?
  • Вопрос задан
  • 216 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
в чем тут логика?

Да ни в чём. Один из подводных камней языка. Типа, значение this должно всегда быть объектом, а для null/undefined, в отличие от строк/чисел/bool нет объектных обёрток, поэтому вот такой костыль. В строгом режиме работает как надо:

(function() {
  'use strict';
  var func = function() { console.log(this); };
  func.call(null); // выведет null
})();
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Комментировать
IonDen
@IonDen
JavaScript developer. IonDen.com
Потому что без использования new контекст туда не передается.
https://jsfiddle.net/rxgovwuj/
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы