什么是javascript`_ | _`?

AJF*_*mar 5 javascript syntax node.js

当我看到这个表达式时,我正在寻找javascript问题的解决方案,即将字符串解析为其组成名称,运算符和括号:

return accept(")") ? _|_ : e;
Run Code Online (Sandbox Code Playgroud)

那是什么_|_?这是使用节点的_功能吗?我找了文档,但没找到任何文件.

当我自己尝试使用它时,会发生这种情况:

> 5
5
> true ? _|_ : 0
ReferenceError: _ is not defined
    at eval:1:1
    at eval
    at n.<anonymous>
Run Code Online (Sandbox Code Playgroud)

作为澄清,该变量_未在代码中的任何位置定义.

这是在Node v8.1.3上运行的,但也适用于chrome本机浏览器JS.

这是代码:

function tokenise(string) {
  const tokens = string.match( /[a-z]+|\(|\)|[!#$%&*+\-\/<=>@^_.,;]+/gi ) || [];
  const accept = s => s===tokens[0] && tokens.shift() ;
  const unaccept = s => s!==tokens[0] && tokens.shift() ;
  const singles = (e) => ( e = unaccept(")") ) ? [ e, ...brackets() ] : [] ;
  const brackets = (e) => accept("(") ? ( e = brackets(), accept(")") || _|_ , [ e, ...brackets() ] ) : singles() ;
  try      { let e = brackets(); return accept(")") ? _|_ : e ; }
  catch(_) { return null; }
}
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 9

_|_在JavaScript中没有特殊含义,它只是一个|(按位OR)表达式,_在其两侧都有标识符.

该代码检查调用的结果accept,如果它是真的,则返回|操作的结果; 如果不是,则返回值e.

这是使用节点的_功能吗?

_在Node代码中并不特殊.在REPL(仅)中,它是一个接收最近评估表达式结果的变量; 这里详细介绍.

作为澄清,该变量_未在代码中的任何位置定义.

这意味着如果accept(")")返回一个truthy值,代码将抛出一个ReferenceError因为_是一个未声明的标识符.如果那是作者的意图,根本不需要|操作员,但在现在删除的答案中,georg指出他们可能已经_|_尝试表达底部的数学概念("计算永远不会成功完成" "),符号为?.在任何情况下,作者似乎都使用它来强制表达式上下文中的异常(因为它throw是一个语句;但有人说在某些时候可能在表达式上下文中允许它).