【发布时间】:2015-03-16 06:38:29
【问题描述】:
15.3.4.2 Function.prototype.toString()
返回一个依赖于实现的函数表示。此表示具有 FunctionDeclaration 的语法。请特别注意,表示字符串中空格、行终止符和分号的使用和放置取决于实现。
为什么它依赖于实现?让它输出由函数的原始代码组成的标准化字符串应该不会太难。此外,我可以提出的原因(例如优化)似乎并没有被过多使用,因为几乎所有浏览器都将原始代码作为 toString 的结果。
如果 toString 不依赖于实现,因此将被标准化为函数的原始代码(以标准方式处理新行等),它不会使可以在 JSON 上包含函数吗?
我确实意识到 JSON,尽管它的名字,独立于 JavaScript,因此函数不应该是它的一部分。但是这种方式理论上可以将函数作为字符串传递,而不会失去跨浏览器的支持。
【问题讨论】:
-
specification says "此表示具有 FunctionDeclaration 的语法",因此结果必须在语法上仍然正确。与实现相关的部分仅与空白等有关。
标签: javascript json ecmascript-5