今天看到CSDN中有网友抱怨,C++ GUI Qt4编程(第二版) 一书中的QtScript部分的例子不工作。
原因比较简单:书中代码测试所用的例子是Qt4.3,但QtScript在Qt4.6时采用JavaScriptCore进行了重写(原来的模块改名为QtScriptClassic放入Qt Solutions中)。
这样一来,QtScript更符合EMAC-262标准,但也对不少用户造成困扰。
对关注Qt4.6前后QtScript问题的用户,QTBUG-5757中的信息将非常有用。
我们简单看一下:
QScriptEngine engine; engine.evaluate(XXXX);
中XXX的内容:
Qt4.5 | Qt4.6 |
"function(){return 1+1;}" | "(function(){return 1+1;})" |
"var f = function(){return 1+1;}" | |
"return 1+1;" | "1+1" |
"{ \"foo\": 123 }" | "({ \"foo\": 123 })" |
可使用内置的 JSON.parse | |
... | ... |
而且现在看来,在Qt5中,QtScript是不会采用V8重写了,将保持目前的状态。