我看到下面的代码,并想知道它在做什么。 它将eval结果转换为对象?Javascript eval questions
eval("Function here")("Object here");
我还有一个问题。 eval是否作为反思工作?每次调用这段代码时它都会加载到内存中,并最终导致内存泄漏?
我看到下面的代码,并想知道它在做什么。 它将eval结果转换为对象?Javascript eval questions
eval("Function here")("Object here");
我还有一个问题。 eval是否作为反思工作?每次调用这段代码时它都会加载到内存中,并最终导致内存泄漏?
在(对象在这里)部分添加使任何对象传递函数的参数。
不,eval()不会显示在反射 - 只有评估的代码。
例
var test_object = "testing!";
console.log("part 1:");
// evaluates whatever is inside of eval();
eval(function(param) {
console.log(param);
})(test_object);
// result is 'testing!'
// now to try to use reflection on eval
var go = eval(function(param) {
console.log(param)
});
console.log("part 2:");
console.log(go);
//result does not include eval()
谢谢。这似乎回答了我的问题! –
eval尝试计算作为参数,如JavaScript代码串,然后尝试运行代码。
在你的情况eval函数将创建方法“的功能在这里”,然后使用“对象这里”作为参数
作为附带节点调用它,如果你需要做能做的事我建议不要使用eval
在任何其他情况下都可以完成,因为评估可能会导致安全问题。这里有一些关于How evil is eval的文档
Javascript的eval函数是一种像运行代码一样运行字符串的方法。
例如:
eval("(function func1(p) {console.log('p: ' + p);})")("test");
是基本相同
(function func2(p) {
console.log('p: ' + p);
})("test");
这基本上是一样的
function func3(p) {
console.log('p: ' + p);
}
func3("test");
在我的节点控制台,它只是触发:*语法错误:意外标识符* –
试一试,eval(console.log)({y:1}) – Alon
您不显示任何功能离子或物体。我们应该如何告诉你,那里发生了什么?还有一个“老”的说法:eval是邪恶的。请不要使用它。 – Seb