Uncaught SyntaxError: Неожиданный токен: в chrome - PullRequest
0 голосов
/ 05 июня 2018

Привет, я только начинаю с Angular, сталкиваюсь с одной ошибкой, а просто пишу простую скелетную программу

let mod1 = function()
{
  let task1 = function()
  {
    console.log('task one executed');
  };

  let task2 = function()
  {
    console.log('tasl 2 executed')
  };
  return 
  {
    t1: task1,
    t2: task2    //error here
  };
};

let newmod = new mod1();
newmod.t1();
newmod.t2();

Я сталкиваюсь с ошибкой:

'Uncaught SyntaxError:Неожиданный токен: 'в // комментарии перед строкой

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Причина

{ }

- это не объект, как можно подумать, а оператор блока , широко известный в таких случаях, как:

 if(true) { } // a block statement
 while(true) { } // a block statement

javascript ожидает, что он будет содержать оператор, а не пары ключ-значение.

return
{
  alert("works");
}

Но почему компилятор не интерпретирует его как объект?Это потому, что оно не является частью выражения, просто удалите символ новой строки, чтобы оно стало частью возвращаемого выражения:

return { /* object */ }

TLDR: никогда не начинать выражение в новой строке

0 голосов
/ 05 июня 2018

Автоматически ; устанавливается после return.После этого JS Compiler считает, что у вас есть область действия

{
    t1: task1,
    t2: task2   
};

И в этой области действия : выдает ошибку.Так что это просто область, а не объект с инициализацией свойств.

Заменить

return 
{
    t1: task1,
    t2: task2    //error here
};

на

return {
    t1: task1,
    t2: task2    
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...