此代码无法理解。我认为这不是一个语法问题,而是完全不了解函数的工作原理。你正在使用对象和函数,而且你好像也不太了解。我并不是说这是粗鲁的,只是说明我对你的问题的看法。事实上,我会尽力为你分解它。
function create(sourceCanvas) {
这是函数定义。这意味着当您使用关键字“创建”时,计算机应链接到大括号{}之间的代码块。你有一个开放的大括号,但没有关闭,所以这是一个语法错误。在创建函数定义中,您已将“sourceCanvas”列为参数。这意味着您要告诉计算机您需要该变量才能执行函数主体中的代码。
var JSARRaster = new NyARRgbRaster_Canvas2D(sourceCanvas);
var JSARParameters = new FLARParam(sourceCanvas.width, sourceCanvas.height);
var JSARDetector = new FLARMultiIdMarkerDetector(JSARParameters, 120);
JSARDetector.setContinueMode(true);
return {
"create": create(),
}
这里您称为“创建”功能。但是你没有列出任何参数。还记得你需要一个“sourceCanvas”的参数吗?这会导致另一个语法错误。你也在“创建”函数中调用“创建”函数。这将导致无限循环,从而导致机器崩溃。
{“create”:create(),}是一个对象。它有一个属性“create”,“create”的值是函数create()返回的值。由于只有一个属性,因此不需要逗号。这是另一个语法错误。
我不知道你的函数是应该做的,但这里是将编译版本:
function create(sourceCanvas) {
var JSARRaster = new NyARRgbRaster_Canvas2D(sourceCanvas);
var JSARParameters = new FLARParam(sourceCanvas.width, sourceCanvas.height);
var JSARDetector = new FLARMultiIdMarkerDetector(JSARParameters, 120);
JSARDetector.setContinueMode(true);
return {
JSARRaster: JSARRaster,
JSARParameters: JSARParameters,
JSARDetector: JSARDetector
}
}
你错过了从功能的右括号。 – elclanrs
语法问题?首先在这里检查:http://jshint.com – elclanrs
'create()'返回任何东西。也许你的意思是'return {create:create}'? –