gpt4 book ai didi

javascript - 函数 toString() 不工作

转载 作者:行者123 更新时间:2023-11-29 18:07:25 25 4
gpt4 key购买 nike

我在我的 QML 应用程序中使用 Javascript,并希望将函数的代码作为字符串插入:

function test(parameter) {
console.log("Something to do!");
}
...
function otherFunction(otherParam) {
console.log("Output: "+test.toString());
}

所有这一切都是为了打印以下内容:

"Output: function() { [code] }"

而不是所需的字符串:"Output: function() { console.log("Something to do!"); }"

P.S.:我记得这段代码最近有效,但在从 Qt 5.2 迁移到 Qt 5.4 和修复 CMake 脚本的过程中,它坏了。

这里有什么问题?

最佳答案

应用于函数的

toString 是一个实现细节。根据 ECMA-262,它应该按照您的预期工作,但显然,在实现时,它不会 :( 无论如何,该标准允许它在实现之间以不同的方式工作。

您依赖于一个实现细节,然后更改了您的实现,所以您不应该感到惊讶。

如果确实需要存储代码,可以通过eval-uating一个字符串来生成函数,然后将代码添加为函数的属性。

根据 5th edition of ECMA-262 ,第 15.3.4.2 节,Function.prototype.toString() 应该返回一个语法为 FunctionDeclaration 的实现定义的再现。所以也许 Qt 的 JS 引擎在这里表现出非标准的行为。

关于javascript - 函数 toString() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30262190/

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