en.javascript.info/1-js/6-objects-more/1-object-methods/2-check-syntax/solution.md
Ilya Kantor 87bf53d076 update
2014-11-16 01:40:20 +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). При этом, естественно, возникнет ошибка.