JavaScript中的return语句非法

JavaScript中的return语句非法,javascript,Javascript,我在java脚本中创建此函数,并不断获取synatx错误。不知道为什么,因为我不熟悉java脚本,请提供帮助。我不知道什么是错的。下面是代码 function create(sourceCanvas) { var JSARRaster = new NyARRgbRaster_Canvas2D(sourceCanvas); var JSARParameters = new FLARParam(sourceCanvas.width, sourceCanvas.heigh

我在java脚本中创建此函数,并不断获取synatx错误。不知道为什么,因为我不熟悉java脚本,请提供帮助。我不知道什么是错的。下面是代码

       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 {
    "create": create(),
}

根据此处的代码:

您的代码如下所示:

function create() {

    return {
        detect: detect,
        getCameraMatrix: getCameraMatrix,
    }
}

return { create: create };
所以底部的“return”在create函数之外

   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(),
}

Return必须在函数中。

此代码无法理解。我不认为这是一个语法问题,而是完全不了解函数是如何工作的。您正在使用对象和函数,但似乎您也不太了解它们。我并不是说这是粗鲁的,只是说我对你的问题的看法。事实上,我会尽力为你解释清楚

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 {
    "create": create(),
}
这是函数定义。这意味着当您使用关键字“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 {
    "create": create(),
}
这里调用的是“create”函数。但你没有列出任何论点。还记得如何需要“sourceCanvas”参数吗?这将导致另一个语法错误。另外,您正在“create”函数中调用“create”函数。这将导致无限循环,使您的机器崩溃

{“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
   }
}

函数中缺少右大括号。语法问题?首先检查此处:
create()
返回任何内容。也许你的意思是
return{create:create}
?return{“create”:create()***,***}应该是:return{“create”:create();}看起来像是一个等待发生的无限递归。。。