所以我看过Execute JavaScript code stored as a string并看了这个简单的answer。
我的问题是,如果存储在字符串中的JScript
代码需要参数,该怎么办?我怎么通过呢?
var jsStr = "WScript.Echo(WScript.Arguments[0]);";
eval(jsStr);
var F = new Function(jsStr);
F.call(this,'test str');
但这次可怜的尝试失败了。
我们假设我无法控制jsStr
值。所以基本上,目前重新格式化它是不可能的。
答案 0 :(得分:2)
问题是由[]引起的。 WScript.Arguments是一个对象(由脚本宿主运行时提供),但不是数组。要访问其元素,您必须使用(),即调用其Item()函数。证据:
var jsStr;
jsStr = "WScript.Echo('a', WScript.Arguments(0));"; eval(jsStr);
jsStr = "WScript.Echo('b', WScript.Arguments.Item(0));"; eval(jsStr);
var expr;
expr = "typeof WScript.Arguments"; WScript.Echo(0, expr, eval(expr));
expr = "typeof WScript.Arguments(0)"; WScript.Echo(1, expr, eval(expr));
expr = "typeof WScript.Arguments[0]"; WScript.Echo(2, expr, eval(expr));
输出:
cscript 27250366.js pipapo
a pipapo
b pipapo
0 typeof WScript.Arguments object
1 typeof WScript.Arguments(0) string
2 typeof WScript.Arguments[0] undefined