0
我要確保JavaScript代碼是有效的語法:如何在Jint解釋器中解析JavaScript代碼?
string test = " var i = 0; ";
Jint.Engine ScrptingEngine = new Jint.Engine();
bool result = ScrptingEngine.Parse(test);
我要確保JavaScript代碼是有效的語法:如何在Jint解釋器中解析JavaScript代碼?
string test = " var i = 0; ";
Jint.Engine ScrptingEngine = new Jint.Engine();
bool result = ScrptingEngine.Parse(test);
可以使用Execute()
法「解析」你的JavaScript和GetValue()
方法來檢索值,然後斷言它按預期工作。
string test = " var i = 0; ";
Jint.Engine ScrptingEngine = new Jint.Engine();
var result = ScrptingEngine.Execute(test).GetValue("i");
Assert.AreEqual(0, result);
此外,Execute
方法也將引發JavaScriptException
如果JavaScript是無效的:
try
{
ScrptingEngine.Execute("xx = ss == esfx = fuct()");
}
catch(JavaScriptException ex) {}
如果添加了腳本的對象不應該運行任何代碼。
var myscript = @"
var badFunction = function(){/* please don't run this*/ }
badFunction();"
new Engine().Execute("var noRun = {" + myscript + "}");
雖然腳本本身不會破壞對象封裝,但並不能保證。
你是對的,但是Execute實際上會運行代碼,我不認爲這是個好主意。如果目前無法在不運行的情況下驗證代碼,我仍然會將此答案標記爲正確。 – Bill
@YongkeBillYu驗證JavaScript而不實際運行它非常棘手,並且需要一個強大的AST解析器。我不知道jint是否支持這一點,並且我在api中的任何地方都看不到Validate方法。 –
你能把我鏈接到API嗎? – Bill