{
указывает начало блока в JavaScript, что видно из следующего фрагмента кода (который является допустимым синтаксисом):
{ var hello = "test" }
Внутренне это переводится в следующую последовательность (помня, что объявления переменных подняты, а не ограничены областью блока):
- Определить переменную hello
- начать блок, ограниченный
{
- assignзначение «тест» до Hello
- конечный блок
Игнорирование блока эквивалентно var hello = "test"
.Если мы применим ту же логику к вашему коду, то
{
// <- following '(' is unexpected
update: function (o){
alert(o);
}
}
преобразуется в следующую последовательность:
- блок начала, ограниченный
{
- defineметка обновление
- оператор начала функции
- ошибка синтаксиса выброса
Игнорирование разделителей блоков, код интерпретируетсяas:
update: function (o){
alert(o);
}
Причина синтаксической ошибки состоит в том, что оператор функции должен иметь имя .Во втором примере оператор функции действителен, потому что у него есть имя.Оба оператора функции имеют имена в третьем, но ,
недопустим при следовании за оператором функции.
Как уже упоминали другие, проблема решается, когда вы заключаете все это в фигурные скобки, потому что код становитсявыражение и, следовательно, юридический синтаксис.