未捕获的SyntaxError:意外的令牌:在chrome中

时间:2018-06-05 12:49:22

标签: javascript angularjs google-chrome

您好我刚开始使用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();

我遇到了错误:

'未捕获的SyntaxError:意外的令牌:'在//行前面评论

2 个答案:

答案 0 :(得分:2)

library(dplyr) data <- data.frame(ANES_6 = c(0, 0, 1, 1), ANES = 5:6) # test data data %>% group_by(ANES_6, ANES >= 6) %>% tally %>% ungroup 后自动设置# A tibble: 4 x 3 ANES_6 `ANES >= 6` n <dbl> <lgl> <int> 1 0. FALSE 1 2 0. TRUE 1 3 1. FALSE 1 4 1. TRUE 1 。之后JS Compiler认为你有一个范围

;

在此范围内return会抛出错误。所以它只是一个范围而不是具有属性初始化的对象。

替换

{
    t1: task1,
    t2: task2   
};

:

答案 1 :(得分:1)

原因

{ }

不是人们可能认为的对象,而是块语句,在以下情况下通常是已知的:

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

所以javascript期望它包含语句,而不是键值对。

return
{
  alert("works");
}

但为什么编译器不会将其解释为对象?好吧,那是因为它不是表达式的一部分,只需删除换行符,使其成为返回表达式的一部分:

return { /* object */ }

TLDR:永远不要在换行符中启动表达式