原标题:《Yet another way to invoke functions without parentheses》 评分: 243 | 作者: aragonite 💭 把括号藏进转义字符,就算摆脱括号了吗? 🎯 讨论背景 文章展示了一段 JavaScript 技巧:通过修改全局原型、利用 `Error.prepareStackTrace `(V8 JavaScript 引擎中定制 `Error.stack ` 的非标准钩子)以及 `valueOf ` 的隐式转换,让单目 `+` 间接执行代码,而表面上不写普通的函数调用括号。代码中的 `\x28 ` 与 `\x29 ` 分别是左右括号的十六进制转义,因而“无括号”并不等于程序文本中完全没有括号字符。讨论由此延伸到 JavaScript 的 permissive coercion 和 prototype 机制的安全、可维护性代价,也比较了 ML、F#、Elixir 等语言中以 `|>` 表达数据流的常规做法。评论还把它放入 IOCCC(国际混淆 C 代码竞赛)和 Perl 怪异语法的黑客文化脉络中,强调这类代码主要是玩具、竞赛