我在查找一个解决JavaScript问题的方案,即将字符串解析为其组成的名称、运算符和括号时,看到了这个表达式:
return accept(")") ? _|_ : e;
那个_|_
是什么?它使用了node的_
功能吗?我已经查找了文档但没有找到。
当我自己尝试使用它时,会发生这种情况:
> 5
5
> true ? _|_ : 0
ReferenceError: _ is not defined
at eval:1:1
at eval
at n.<anonymous>
需要澄清的是,在代码中未定义变量_
。
该代码在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; }
}