2017-07-19 118 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代碼。