相关疑难解决方法(0)

在JavaScript中指定eval()的范围?

有什么办法可以在特定范围内执行eval()(但不是全局)

例如,以下代码不起作用(在第二个语句中未定义)因为它们位于不同的范围内:

eval(var a = 1); 
eval(alert(a));
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我想动态创建一个范围.例如(语法肯定是错误的,但只是为了说明这个想法)

var scope1;
var scope2;
with scope1{
    eval(var a = 1); eval(alert(a));  // this will alert 1
}
with scope2{
    eval(var a = 1); eval(a++); eval(alert(a));  // this will alert 2
}
with scope1{
    eval(a += 2); eval(alert(a)); // this will alert 3 because a is already defined in scope1
}
Run Code Online (Sandbox Code Playgroud)

有关如何实现这样的事情的任何想法?谢谢!

javascript scope eval

21
推荐指数
5
解决办法
2万
查看次数

不使用此关键字的上下文中的javascript eval

我试图在特定的上下文中执行eval.我发现这里的答案很有用.但是,我在Chrome版本53.0.2785.143 m中收到以下行为.没试过其他浏览器.我使用的代码如下:

function evalInContext(js, context) {
    return function() { return eval(js); }.call(context);
}


console.log(evalInContext('x==3', { x : 3})) // Throws
console.log(evalInContext('this.x==3', { x : 3})) // OK
Run Code Online (Sandbox Code Playgroud)

不过我期待第一次打电话evalInContext不要扔.任何想法为什么会这样?

javascript eval

4
推荐指数
2
解决办法
1256
查看次数

当我只想调用函数时,eval()的更安全的替代方法是什么?

我知道PHP有call_user_func,我只是想知道JavaScript是否有类似的东西,我要调用的方法是,例如:object.set$fieldID($fieldValue)

我宁愿不通过if/else/switch块来正确执行一行代码.

如果它有帮助,我使用jQuery.

javascript eval

3
推荐指数
1
解决办法
2475
查看次数

在 AWS Lambda 中使用 JavaScript eval()

我想使用 AWS Lambda 运行用户通过 Web 提交的 JavaScript 代码。我的 Lambda 函数将返回返回值 、stderrstdout。这样做我可能会遇到什么问题?

恶意用户是否能够提交导致 Lambda 函数出现问题的代码?用户所做的更改(例如对节点环境或文件系统的更改)是否在调用中持续存在?有什么办法可以防止这种情况发生吗?

eval()可以将文件写入 Lambda 文件系统并调用:

const userCodeProcess = require('child_process').fork('user_code.js')
userCodeProcess.on('message', response.send)
Run Code Online (Sandbox Code Playgroud)

child-process amazon-web-services node.js aws-sdk aws-lambda

2
推荐指数
1
解决办法
2054
查看次数