此代碼無法理解。我認爲這不是一個語法問題,而是完全不瞭解函數的工作原理。你正在使用對象和函數,而且你好像也不太瞭解。我並不是說這是粗魯的,只是說明我對你的問題的看法。事實上,我會盡力爲你分解它。
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}'? –