2017-03-28 6 views
0

나는 자바 스크립트 코드J2V8에서 익명 기능을 실행할 수 있습니까? 내가되지도 오류가없고 결과, 내가 변수에 기능을 할당하면</p> <pre><code>undefined:1: ReferenceError: document is not defined </code></pre> <p>:

(function() { 
    var z = ''; 
    var b = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; 
    for (var i = 0; i < b.length; i += 2) { 
     z = z + parseInt(b.substring(i, i + 2), 16) + ','; 
    } 
    z = z.substring(0, z.length - 1); 
    eval(eval('String.fromCharCode(' + z + ')')); 
})(); 

이 조각을 실행하기 위해 노력하고있어하지만 난이 오류가 발생했습니다 .

var a = function() { 
    var z = ''; 
    var b = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; 
    for (var i = 0; i < b.length; i += 2) { 
     z = z + parseInt(b.substring(i, i + 2), 16) + ','; 
    } 
    z = z.substring(0, z.length - 1); 
    eval(eval('String.fromCharCode(' + z + ')')); 
}; 

이 스크립트를 J2V8에서 실행하는 방법에 대해 알고 싶습니까? 미리 감사드립니다.

+0

'대신 String.fromCharCode (NaN가 NaN이 NaN이 NaN이 NaN이 NaN이 NaN이 NaN이 NaN이 NaN이 NaN이 NaN이 NaN이 NaN이 NaN이 NaN이 NaN이 NaN이 NaN이 , NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN) - WTF? 오류가있는'b'의 실제 값을 게시하십시오. – Bergi

답변

0

솔직히 말해서, 저는 JS가해야 할 일을 모릅니다. evaleval으로 묶여 있고이 함수에는 return 문이 없습니다. 또한 xxxxx은 유효한 입력으로 보이지 않습니다.

내가 말한 바에 따르면, 포장 된 평가판을 제거하면 변수 b에 대한 번호를 사용하고 결과를 반환하므로 제대로 작동합니다.

@Test public void testExample2() { String jsCode = "(function() {\n" + "var z = '';\n" + "var b = '12345678';\n" + "for (var i = 0; i < b.length; i += 2) {\n" + " z = z + parseInt(b.substring(i, i + 2), 16) + ',';\n" + "}\n" + "z = z.substring(0, z.length - 1);\n" + "return eval('String.fromCharCode(' + z + ')');\n" + "})();"; Object result = v8.executeScript(jsCode); System.out.println(result); }