得到意外token,求解释

Posted

技术标签:

【中文标题】得到意外token,求解释【英文标题】:Get unexpected token, looking for explanation 【发布时间】:2019-08-31 08:58:57 【问题描述】:

可能会在不同的频道上问这个问题。我有这个:

const reduceList = (list) => 

  return list.filter(Boolean).reduce((a, b, c) => 
    console.log(this);
  );


;

console.log(reduceList([1, 2, 3]));

我明白了:

console.log(this);
                 ^

SyntaxError: Unexpected token 在新脚本 (vm.js:74:7) 在 createScript (vm.js:246:10) 在 Object.runInThisContext (vm.js:298:10) 在 Module._compile (internal/modules/cjs/loader.js:657:28) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10) 在 Module.load (internal/modules/cjs/loader.js:599:32) 在 tryModuleLoad (internal/modules/cjs/loader.js:538:12) 在 Function.Module._load (internal/modules/cjs/loader.js:530:3) 在 Function.Module.runMain (internal/modules/cjs/loader.js:742:12) 启动时(内部/bootstrap/node.js:266:19)

有人知道这是为什么吗?我使用的是 Node.js 版本 11。

【问题讨论】:

这真的很有趣,因为保留字可以是对象属性名称。 【参考方案1】:

速记对象初始化语法需要一个标识符。虽然this(和其他保留字)在技术上是一个 IdentifierName,但它不能用作 ECMAScript 规范中解释的 Identifier

保留字是 IdentifierName,不能用作 Identifier

https://www.ecma-international.org/ecma-262/6.0/#sec-reserved-words

所以这不仅限于this关键字,使用其他保留字也会产生类似的语法错误:

true // syntax error
true: true // valid object literal

基本上,您需要使用命名标识符(变量)才能在此处正常工作。可以使用保留字作为属性名称,但不能作为 标识符,因为它们的评估方式不同。

【讨论】:

速记对象初始化器spec 供参考。

以上是关于得到意外token,求解释的主要内容,如果未能解决你的问题,请参考以下文章

一段Delphi代码,求解释

MATLAB中的图例问题,求解释。。

Python代码求解释 求大神解释一下这段代码 详细点 最好每句加上注释 谢了

matlab BP神经网络训练程序求解释

CAD中一个特殊图层求解释

js乘法精度计算代码 求解释