2017-07-19 115 views
-1

只是好奇,只是使用V8ScriptEngine, 开始我有这样的代码片段如何v8ScriptEngine推断出脚本语言

private void button1_Click(object sender, EventArgs e) 
     { 
      string f = "function myFunc(x) {if(x >= 3500.00) return '001'; else return '002'; }"; 
      string r = ""; 
      using (var eng = new V8ScriptEngine()) { 
       eng.Evaluate(f); 
       r = (string)eng.Script.myFunc(3500.0000001); 
      } 
      Console.WriteLine("r={0}", r); 
     } 

和工作正常..

如何脚本引擎推断脚本语言是Javascript?, 我会想象它必须评估整个脚本块来断言它是否是java或vb或任何其他支持的语言,是不是很昂贵的任务?或者是否可以告诉Scriptengine语言目标具有特定的味道?

+4

V8不只处理Javascript?您在此代码中专门创建了V8ScriptEngine的新实例。尝试修改你的字符串,显然不是Javascript,看看你是否有错误。 –

+0

我想接受此评论作为答复,请发帖作为答复。谢谢 – TonyP

回答

0

V8引擎只执行Javascript代码。因此它假定传递给它的任何代码都是Javascript。

如果通过其他脚本语言您的意思是像TypeScript或CoffeeScript这些不是由V8引擎直接执行的。他们需要首先编译成Javascript(一个通常被称为transpilation的过程)。此过程将生成与TypeScript/CoffeeScript源代码等效的Javascript代码。