2017-11-29 21 views
1

다음과 같은 코드가 있습니다.ScriptEngine JavaScript가 포함을 지원하지 않습니까?

ScriptEngineManager manager = new ScriptEngineManager(); 
ScriptEngine engine = manager.getEngineByName("nashorn"); 
engine.eval("[1, 2, 3].includes(1)"); 

그러나 다음과 같은 오류

javax.script.ScriptException: TypeError: [1, 2, 3].includes is not a function in <eval> at line number 1 
    at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:470) 
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:454) 
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:406) 
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:402) 
    at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:155) 
    at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264) 

내가 같이 IndexOf를 할 수가 발생합니다 (1) 대신 그것은 작동하는 것 같다,하지만 방법이 함께 포함되어 내가 액세스 할 수없는 이유가있다 파서?

+1

'포함'은 ecmascript 2016에 포함 되었기 때문에? –

+0

ecmascript 2016을 포함하는 Java 호환 JavaScript 파서가 있는지 알고 있습니까? – Coat

답변

1

String.prototype.includes는 ECMAScript 2015 (ECMA-262 6th Edition)에 지정됩니다. Nashorn 엔진은 ECMA-262 Edition 5.1을 구현합니다. 참고 항목 : http://www.ecma-international.org/ecma-262/6.0/#sec-string.prototype.includes

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes에는 String.prototype.includes에 대한 polyfill이 있습니다. polyfill이 Nashorn 엔진과 함께 작동하는지 확인했습니다.

+0

예제에서 참조하고있는 polyfill을 어떻게 활용할 수 있습니까? – Coat

+1

"eval"은 String.prototype.includes 함수를 사용하는 코드를 평가하기 전에 해당 페이지의 polyfill 코드입니다. –

+0

대단히 감사합니다. 새로운 것을 매일 배웁니다. :). – Coat