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