我看到下面的代碼,並想知道它在做什麼。 它將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