gpt4 book ai didi

JavaScript、v8 和函数打印

转载 作者:行者123 更新时间:2023-11-29 20:20:49 24 4
gpt4 key购买 nike

在 node.js(或 v8/chrome)中,我可以依靠使用字符串连接来获取函数背后的代码吗?

例如,在 node.js 中

var f = function(x) { return x; }
console.log(f);

显示“[Function]”而

console.log("" + f);

显示“函数(x){返回x;}”

这是一个可靠的语义吗?这是在 ECMA 规范中的某个地方吗?

最佳答案

好吧,我会说是的,因为您使用的是 V8。

String 连接在幕后真正做的是调用 Function.prototype.toString 方法,例如:

var str = "" + f;

大致相当于:

var str = f.toString();

此方法提供函数的依赖于实现的字符串表示,它可以因实现而异,例如空格,或者可以完成优化。

但是由于您的目标是特定的实现,我认为您不会有任何问题。

如果您得到 [object Function]",那是因为(奇怪的是)正在执行 Object.prototype.toString 而不是 Function.prototype。 toString 一个,例如:

Object.prototype.toString.call(function () {}); // "[object Function]"

关于JavaScript、v8 和函数打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4019983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com