VBScript의 [전역] 실행은 eval()과 동일한 자바 스크립트입니다. 전달 된 코드는 호출 컨텍스트에서 평가됩니다.
는 참조 here for details, pros and cons
UPDATE
같은 방법을 추천하지만, 동등성에 대한 이해 명확히하지 않음 :
// calling eval in global context is the exact equivalent of ExecuteGlobal
eval("function f0() {print('f0(): yes, we can!');}");
f0();
// calling eval in locally is the exact equivalent of Execute
function eval00() {
eval("function f1() {print('f1(): no, we can not!');}");
f1();
}
eval00();
try {
f1();
}
catch(e) {
print("** error:", e.message);
}
// dirty trick to affect global from local context
function eval01() {
eval("f2 = function() {print('f2(): yes, we can use dirty tricks!');}");
f2();
}
eval01();
f2();
출력 : 그래서
js> load("EvalDemo.js")
f0(): yes, we can!
f1(): no, we can not!
** error: "f1" is not defined.
f2(): yes, we can use dirty tricks!
f2(): yes, we can use dirty tricks!
: 문제 VBScript에서 Execute [Global]를 사용하여 해결할 수있는 항목은 Javascript에서 eval()을 사용하여 해결할 수 있습니다. 일부 문제는 추가 작업이나 트릭이 필요할 수 있습니다.
Abhishek이 명시 적으로 "나는 자바 스크립트에서 자바 스크립트를 평가하고 싶다"고 말했기 때문에 나는 내 대답을 정당화 할 필요가 없다고 느낍니다.
무언가가 문자열을 코드로 실행하면 해결책은 리팩토링하여 해결하지 못하게하는 것입니다. 문자열에 코드를 보관하면 안됩니다. – Quentin
당신은'setTimeout (code, 0)'을 사용할 수 있었지만 정말 필요할까요? 나는 쿠엔틴에 동의한다. –
@FelixKling - (끔찍한 경고와 함께) 제안 할 것이지만, 대부분의 JS 엔진에는 최소 시간 제한이 있으며 코드를 비동기 적으로 평가합니다. – Quentin