2017-11-29 8 views
1

私は次のようなコードを持っています。代わりに、私はのindexOfを行うことができます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) 

をスローします(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

私の例で参照しているポリフィルをどのように利用できますか? – Coat

+1

String.prototype.includes関数を使用するコードを評価する前に、そのページのpolyfillコードを "eval"します。 –

+0

ありがとう、毎日何か新しいことを学ぶ:)。 – Coat

関連する問題