SyntaxError:意外令牌'。'

时间:2020-06-14 04:36:09

标签: javascript node.js arrays express

我通过创建下面的代码使用map合并了2个数组。

var result2 = data.map(k=>(
  stAttendance = attendance.find(p=>p.StudentName._id==k._id),
  ({...k, Present:stAttendance?.Present ?? 0, absent:stAttendance?.absent ?? 0, extra:stAttendance?.extra ?? 0})
));

console.log(result2);

当我在HTML页面的script标签中使用此代码时,它可以完美地工作。 一旦将其放入Node JS router.get函数中,它就会开始显示以下错误

  ({...k, Present:stAttendance?.Present ?? 0, absent:stAttendance?.absent ?? 0, extra:stAttendance?.extra ?? 0})
                                       ^

SyntaxError: Unexpected token '.'

有人知道我在做什么错吗?

2 个答案:

答案 0 :(得分:1)

对于每个node.green,甚至node.js v14都不支持可选的链接?.运算符。但是,当我自己测试nodejs v14.4时,它确实对我有用。

nullish coalescing operator ??类似。

MDN似​​乎声称从node.js 14.0开始都支持两者,因此它们在您的v12中不起作用。

如果在您的nodejs版本中不支持该代码,则可以像在这些新运算符之前一样编写代码。只需将代码分成多个步骤,然后检查条件语句是否正确存在属性即可。

答案 1 :(得分:1)

您可以使用以下代码替换现有代码以进行可选的链接和无效合并。

var result2 = data.map(k=>(
  stAttendance = attendance.find(p=>p.StudentName._id==k._id) || {},
  ({...k, Present: stAttendance.Present || 0, absent: stAttendance.absent || 0, extra:stAttendance.extra || 0})
));