2014-01-20 39 views
-1

我在java脚本中做了这个函数并且一直在创建synatx错误不知道为什么请帮忙,因为我是java脚本的新手。我不知道wat是错的。以下是代码。JavaScript中的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(), 
} 
+7

你错过了从功能的右括号。 – elclanrs

+0

语法问题?首先在这里检查:http://jshint.com – elclanrs

+0

'create()'返回任何东西。也许你的意思是'return {create:create}'? –

回答

0

此代码无法理解。我认为这不是一个语法问题,而是完全不了解函数的工作原理。你正在使用对象和函数,而且你好像也不太了解。我并不是说这是粗鲁的,只是说明我对你的问题的看法。事实上,我会尽力为你分解它。

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