Javascript 了解eval()用于计算布尔值的用法

Javascript 了解eval()用于计算布尔值的用法,javascript,Javascript,我正在浏览timer.js的代码。并遇到以下代码行: var paramList = ['autostart', 'time']; for (var arg in paramList) { if (func[paramList[arg]] != undefined) { eval(paramList[arg] + " = func[paramList[arg]]"); } }; 在源代码中,这一切都集中在一行上,但我在上面使其更具可读性,我的困难在于使用eval

我正在浏览timer.js的代码。并遇到以下代码行:

var paramList = ['autostart', 'time'];
for (var arg in paramList) {
    if (func[paramList[arg]] != undefined) {
        eval(paramList[arg] + " = func[paramList[arg]]");
    }
};
在源代码中,这一切都集中在一行上,但我在上面使其更具可读性,我的困难在于使用
eval
,即下面的代码行:

eval(paramList[arg] + " = func[paramList[arg]]");
现在,如果我在上面的一行中添加一个chrome断点,然后转到控制台并粘贴代码行,我会得到以下结果:

true 
为什么?让我们再仔细看看这句话:

eval(paramList[arg] + " = func[paramList[arg]]");
+
在这里做什么?将
paramList[arg]
转换为字符串,在这种情况下使用eval如下:

eval("paramList[arg] = func[paramList[arg]]");
?

或者加号用于连接目的?(我认为这不太可能!)

我读过,但仍有疑问

有人能解释一下那份声明的细目吗


多谢各位

eval
接受一个字符串。你所拥有的:

eval(paramList[arg] + " = func[paramList[arg]]");
这个
+
就是字符串连接。

相当于:

var code = paramList[arg] + " = func[paramList[arg]]"
eval(code);
global[paramList[arg]] = func[paramList[arg]];
所以我认为它应该相当于:

var code = paramList[arg] + " = func[paramList[arg]]"
eval(code);
global[paramList[arg]] = func[paramList[arg]];
或者,在这个特定示例中(使用
var-paramList=['autostart','time'];)
):


eval
接受一个字符串。你所拥有的:

eval(paramList[arg] + " = func[paramList[arg]]");
这个
+
就是字符串连接。

相当于:

var code = paramList[arg] + " = func[paramList[arg]]"
eval(code);
global[paramList[arg]] = func[paramList[arg]];
所以我认为它应该相当于:

var code = paramList[arg] + " = func[paramList[arg]]"
eval(code);
global[paramList[arg]] = func[paramList[arg]];
或者,在这个特定示例中(使用
var-paramList=['autostart','time'];)
):


我真的只是想知道
eval(paramList[arg]+“=func[paramList[arg]]”
等于
eval(“paramList[arg]=func[paramList[arg]]”,我的控制台对这两个都给出了相同的结果,但我还是要问,这就是我真正想知道的,谢谢你的努力@AlexanderSolonik我不知道您的控制台如何为这两者提供相同的结果。请再次阅读我的答案。什么是全局[paramList[arg]=func[paramList[arg]]?在Node.js中,它是一个全局名称空间对象。在浏览器中,可以使用
窗口
。然而,我的答案的最后一段显示,在实际代码中,使用了名称的词法范围。在那一行
eval(paramList[arg]+“=func[paramList[arg]]”上到底发生了什么,是赋值还是什么?我真的只是想知道
eval(paramList[arg]+“=func[paramList[arg]]”
等于
eval(“paramList[arg]=func[paramList[arg]]”,我的控制台对这两个都给出了相同的结果,但我还是要问,这就是我真正想知道的,谢谢你的努力@AlexanderSolonik我不知道您的控制台如何为这两者提供相同的结果。请再次阅读我的答案。什么是全局[paramList[arg]=func[paramList[arg]]?在Node.js中,它是一个全局名称空间对象。在浏览器中,可以使用
窗口
。然而,我的答案的最后一段显示,在实际代码中,使用了名称的词法范围。在那一行
eval(paramList[arg]+“=func[paramList[arg]]”上到底发生了什么,是赋值还是什么?+只是字符串串接+只是字符串串接