У меня есть следующий код JavaScript в виде строки
std :: string script = «{function execute () {var x = 10; return x;}}»;
Я хочу оценить этот скрипт и вернуть значение, есть ли способ сделать это?
Заранее спасибо.
Для оценки JS-скрипта вам понадобится
JSBool JS_EvaluateScript(JSContext *cx, JSObject *obj, const char *src, uintN length, const char *filename, uintN lineno, jsval *rval);
Как описано здесь: https://developer.mozilla.org/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_EvaluateScript
Затем, если вы хотите получить возвращаемое значение, вам нужно вызвать функцию exectue:
"function execute(){ var x = 10; return x;} execute();"
Затем для оценки сценария необходимо const char*
типа не std::string
После оценки скрипта вы можете получить возвращаемое значение, используя rval
if(JSVAL_IS_INT(rval))
printf("The returned value is : %d\n", JSVAL_TO_INT(rval));
Других решений пока нет …