2015-06-26 3 views
0

Я пытаюсь сделать веб-приложение, у меня есть контроллер задач в отдельный файл .js, который я включаю в основной файл .html:.Uncaught Синтаксическая ошибка: неожиданный маркер (даже если функция действует

<head> 
    <script src = "tasks-controller.js"></script> 
</head> 

и файловые задачи-controller.js:

tasksController = function() { 
    var taskPage; 
    var initialized = false; 

    return 
    { 
     init: function(page) { 
      if(!initialized) 
      { 
       .... some manipulation with jQuery...  
       initialized = true;    
      } 
     } 
    } 
}(); 

Назад в моем основном файле .html я называю задачи право контроллера после закрытия элемента кузова:

<script> 
$(document).ready(function() 
{ 
    tasksController.init($('#taskPage')); 
} 
</script> 

Когда я проверить файл, в хромированных инструментах Google, я получаю неперехваченный SyntaxError: Неожиданный маркер (на 8-ой строке задачи-controller.js, который эта строка:

init: function(page) 

вместе с другой ошибкой, что «tasksController» не определяется, когда я называю это выше. Любые предложения о том, что я делаю неправильно? Благодаря!

+0

не обнаружил проблем с кодом. –

+0

Хмм, я не вижу в этом ничего плохого, если не существует волшебных пространств. –

ответ

1

Метод ready где ошибка. Вы пропустили ) от ready.

См. Выделенный код и комментарии в коде ниже.

$(document).ready(function() { 
    tasksController.init($('#taskPage')); 
}); // The) you've missed 
// ^^^ 

Другая проблема в вашем коде - это заявление return. Если вы поместите object на следующую строку return, он всегда будет возвращать undefined. Automatic semicolon insertion заставит код поставить точку с запятой после return.

Таким образом, это будет return;.

Используйте следующий код:

tasksController = function() { 
    var taskPage; 
    var initialized = false; 

    return { 
     init: function(page) { 
      if (!initialized) { 
       ....some manipulation with jQuery... 
       initialized = true; 
      } 
     } 
    }; 
}(); 
+0

Ум, там один. – Scimonster

+0

@Scimonster '' Не вижу в этом – Tushar

+0

DownVoters, пожалуйста, комментарии здесь – Tushar

0

Благодаря неявной запятой, код равен это:

return; 
{ 
    init: function(page) { 
     if(!initialized) 
     { 
      .... some manipulation with jQuery...  
      initialized = true;    
     } 
    } 
} 

Возвращение не возвращается ничего, и поэтому {} делает новый блок. Теперь вы можете понять, почему у вас синтаксическая ошибка.

Просто измените первую строку на return { (нет новой строки), и вы должны быть хорошими.

См. Strangest language feature.

Смежные вопросы