en.javascript.info/01-js/06-objects-more/01-object-methods/02-check-syntax/solution.md
Ilya Kantor f301cb744d init
2014-10-26 22:10:13 +03:00

935 B
Raw Blame History

Ошибка!

Попробуйте:

//+ run
var obj = {
  go: function() { alert(this) }
}

(obj.go)()  // error!

Причем сообщение об ошибке в большинстве браузеров не даёт понять, что на самом деле не так.

Ошибка возникла из-за того, что после объявления obj пропущена точка с запятой.

JavaScript игнорирует перевод строки перед скобкой (obj.go)() и читает этот код как:

var obj = { go:... }(obj.go)()

Интерпретатор попытается вычислить это выражение, которое обозначает вызов объекта { go: ... } как функции с аргументом (obj.go). При этом, естественно, возникнет ошибка.