gpt4 book ai didi

使用 eval 的 Javascript 函数赋值

转载 作者:行者123 更新时间:2023-11-30 08:03:47 25 4
gpt4 key购买 nike

我在重新分配功能时遇到问题。我想为一个先前定义的函数 drawScene 分配一个不同的方法。

function fSwap(funcName, code) {
eval(funcName) = eval(code);
}
fSwap("drawScene", "function drawScene() { /* Do something */ }");

我觉得这应该可行,但由于某些原因 eval(funcName) 不是左值,它返回错误 ReferenceError: invalid assignment left-hand side。更令人费解的是:

var a = function test() {return 0;};
alert(a === eval("a"));
eval("a") = function test() {return 1;};

使用 true 给出警告,但不允许我分配给函数 a

我唯一的猜测是出于安全原因,eval() 不会返回左值。如果是这样,我如何实现 fSwap() 以便它接收两个字符串并将代码分配给给定的函数名称?

最佳答案

您应该改用回调函数。你可以这样做:

function fSwap(funcName, callback) {
window[funcName] = callback;
}
fSwap("drawScene", function drawScene() { /* Do something */ });

要直接回答您的问题,问题在于您正在为一段已评估的代码分配一个值。那行不通的。什么会起作用:

function fSwap(funcName, code) {
eval(funcName+' = '+code);
}

但请不要这样做。另一种方法,使用回调函数,更简洁。只要不是绝对需要使用 eval ,几乎总是最好不要使用它。 (根据 your comment ,显然绝对需要使用字符串,所以请使用这段代码)。

关于使用 eval 的 Javascript 函数赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21649928/

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