2014-01-20 66 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 
    } 
}