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

24 lines
935 B
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

**Ошибка**!
Попробуйте:
```js
//+ run
var obj = {
go: function() { alert(this) }
}
(obj.go)() // error!
```
Причем сообщение об ошибке в большинстве браузеров не даёт понять, что на самом деле не так.
**Ошибка возникла из-за того, что после объявления `obj` пропущена точка с запятой.**
JavaScript игнорирует перевод строки перед скобкой `(obj.go)()` и читает этот код как:
```js
var obj = { go:... }(obj.go)()
```
Интерпретатор попытается вычислить это выражение, которое обозначает вызов объекта `{ go: ... }` как функции с аргументом `(obj.go)`. При этом, естественно, возникнет ошибка.