【发布时间】:2018-11-29 15:21:57
【问题描述】:
我有这个代码块:
var comma_decoded = window.btoa(',');
var comma_encoded = window.atob(comma_decoded);
var log = eval(comma_encoded);
var x = 1 log y = 2;
console.log(x + ' ' + y);
但是,我无法将“,”字符作为代码执行。
我需要 '1 2' 输出,所以日志变量必须像逗号 (,) 一样工作
谢谢。
【问题讨论】:
-
x = 1 log y = 2只会表示x = 1 log y = 2并且永远是荒谬的。如果有什么你想要eval整个事情作为“动态代码”。虽然我真的看不懂重点…… -
是的,这完全不是它的工作方式或它原本打算如何工作的方式。你到底想做什么?您要解决的实际问题是什么?
-
这听起来像是一个巨大的XY problem...
-
这个问题毫无意义。你可以这样做
eval("var x = 1" + comma_encoded + "y = 2;")这是合法的,但如果你这样做,你可能在做一些根本错误的事情。 -
需要使用
eval()通常表明应用程序的结构存在问题,因为无法避免 eval() 的有效用例数量非常少。所以请描述一下这个函数会做什么以及为什么选择 eval() 而不是其他任何东西:new Function( 'var x = 1' + comma_encoded + 'y = 2; )()或var [ x, y ] = JSON.parse( '[ 1, 2 ]' );等......
标签: javascript eval decode execution