JavaScript中的return语句非法

时间:2014-01-20 20:12:02

标签: javascript

我在java脚本中创建此函数并不断获取语法错误不知道为什么请帮助,因为我是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(),
}

2 个答案:

答案 0 :(得分:0)

根据你的代码:

object [object Object] is not a function in javascript

您的代码布局如下:

function create() {

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

return { create: create };

因此底部“返回”在创建函数之外。

返回必须是一个函数。

答案 1 :(得分:0)

此代码无法理解。我认为这不是一个语法问题,而是完全缺乏对函数如何工作的理解。你正在使用对象和一个函数,你似乎也不太了解它们。我不是说这是粗鲁的,只是陈述我对你的问题的看法。事实上,我会尝试为你分解它。

function create(sourceCanvas) {

这是功能定义。这意味着当您使用关键字“create”时,计算机应链接到花括号{}之间的代码块。你有一个大括号,但没有结束大括号,所以这是一个语法错误。在create function定义中,您已将“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
   }
}