当我使用系统库中提供的JSC(JavaScriptCore)引擎时,它的行为与使用Safari的调试控制台时不同
$ /System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc
>>> console.log("hello");
Exception: TypeError: undefined is not an object (evaluating 'console.log')
当console.log("hello");
在Safari中完美运行时。
答案 0 :(得分:6)
<强> TL; DR 强>
var Console = function () {
this.log = function(msg){ debug(msg) };
};
var console = new Console();
console.log("hello");
Safari创建一个控制台对象,该对象在调试控制台中可用,但在JSC环境中不可用。请参阅Safari的控制台文档here
添加我自己的包装JSC调试方法的控制台对象解决了我的问题:
$ /System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc
>>> var Console = function () {
... this.log = function(msg){ debug(msg) };
... };
undefined
>>> var console = new Console();
undefined
>>> console.log("hello");
-> hello
undefined
答案 1 :(得分:1)
JSC中不存在控制台对象 - 如果您喜欢JavaScriptCore console.log
,可以添加它答案 2 :(得分:0)
我最终得到了一个适用于其他JS引擎以及JSC兼容性的衬垫:
Controller
答案 3 :(得分:0)
我从上面的答案中学到了。
尽管我没有看到目标,但我认为是在stdout上看到输出:
print('string')
准备就绪后,使用流编辑器将“ print”替换为“ console.log”。