eval을 사용하는 것이 좋습니다는 아니며이 링크도 읽었습니다. Set Variable inside Eval (JavaScript)자바에서 "eval"로 실행되는 코드에서 변수에 액세스
그러나 이것은 내가하고 싶은 일입니다. 텍스트 상자에 코드가 있다고 가정 해 보겠습니다. 그래서 그 텍스트를 가져 와서 그 코드의 모든 전역 변수, 함수 및 객체를 찾아야합니다. 내 생각은 네임 스페이스에 코드를 래핑하고 평가 한 다음 네임 스페이스의 속성을 반복하여 결과를 얻는 것이 었습니다. 그러나 eval이 성공적으로 실행 되더라도 거기에 정의 된 변수에 액세스 할 수 없습니다. 더 나은 솔루션이나 다른 방법으로이 작업을 수행 할 수 있습니까?
http://jsfiddle.net/DbrEF/2/ - 여기가 피들입니다.
"var 코드"는 실제로 임의 코드 일 수 있습니다. 나는 그 일을하는 것이 안전하지 못하다는 것을 알고 있지만, 나는 다른 상황에서 그것을 필요로한다. 덕분에 안전하게
window.onload = function(){
'use strict';
//use strict forces to run code in "strict mode"
//use strict prevents eval from
//contaminating the immediate scope
//let's test with "foo"
var foo = 'lol';
//now code has "foo" but using "use strict"
//makes code in eval stay in eval
//note that at the last of the code, foo is "returned"
var code = 'var foo = {name: "Spock",greeting: function() {return "Hello " + foo.name;}}; foo';
//store eval'ed code in evalO
var evalstore = eval(code);
console.log(evalstore); //code in eval stays in here, which is "inner foo"
console.log(foo); //"outer foo" is unharmed and daisy fresh
};
사용하여 평가를 사용하는 방법에 대한
닫기 투표자 - 어떻게 이것이 너무 현지화 되었습니까? –