Javascript 了解eval()用于计算布尔值的用法
我正在浏览timer.js的代码。并遇到以下代码行: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
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]]”上到底发生了什么代码>,是赋值还是什么?+只是字符串串接+只是字符串串接