【问题标题】:Getting Parsing Error,Unexpected token in Javascript code获取解析错误,Javascript代码中出现意外的标记
【发布时间】:2017-12-20 14:15:44
【问题描述】:

考虑到模块结构、闭包和立即调用 (IIFE) 原则,我正在使用 HTML、CSS 和 Javascript 创建预算应用程序。 我将模块结构分为 UIController 、Appcontroller、BudgetController。

我在 UI 控制器中有一个 getinput 方法,它从前端返回一个带有输入值的对象,我正在从应用程序控制器调用这个 getinput。但是我在 getinput 方法行下遇到错误。是否有任何语法错误或者我是做错事了。

Script.js

var budgetController=(function(){
    //some code
})();

/*--------------------------------------------------------------*/

// UI Controller
var UIController=(function(){
    return
    {
        getInput:function(){
            return {
                type: document.querySelector('.add__type').value,
                description: document.querySelector('.add__description').value,
                value: document.querySelector('.add__value').value
            };
        }
    };
})();

/*--------------------------------------------------------------*/

// App controller
var controller=(function(budgetctrl,UIctrl)
{
    var ctrlAddItem=function()
    {
        var result=UIctrl.getInput();
        console.log(result);
        // get the input data

        // add the budget item to budget controller

        // add the item to ui controller

        // calculate the budget

        // display the result 
    }

    // Button click event

    document.querySelector('.add__btn').addEventListener('click',ctrlAddItem);

    //event key event

    document.addEventListener('keypress',function(event)
    {
        if(event.keyCode===13 || event.which ===13)
        {
            ctrlAddItem();
        }
    });
})(budgetController, UIController)

【问题讨论】:

  • 您有错误消息和它的来源吗?为什么阻止你修复它?
  • 实际上我正在从教程中学习高级 javascript,他们实现了相同的东西,语法也相同,我在浏览器控制台中收到此错误。只是为了确保在行或我做错了什么

标签: javascript


【解决方案1】:

问题出在这里:

return
{

如果您将{ 移到与return 相同的行,语法错误就会消失:

return {

错误是由于自动插入分号而发生的。 JavaScript 在return 之后为您添加了一个分号,因此代码有效:

return;
{

这绝对不是你想要的。

当您编写 JavaScript 代码并且必须将 { 放在某处时,请始终将其与之前的语句放在同一行,而不是单独放在一行。我相信这个特定问题只发生在return 语句中,而不是像if 这样的其他语句,但保持一致是很好的。

例如,您不会在这些行上得到错误:

var controller=(function(budgetctrl,UIctrl)
{
    var ctrlAddItem=function()
    {

但由于您必须遵循 return 的“同一行大括号”样式,因此在任何地方都这样做会更加一致(并添加更多空白以提高可读性):

var controller = (function( budgetctrl, UIctrl ) {
    var ctrlAddItem = function() {

【讨论】:

  • superrrrr !!! thnku,它的工作原理,没有读到关于在javascript中返回的东西,会记住
猜你喜欢
  • 2020-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-15
  • 1970-01-01
  • 2023-01-20
  • 1970-01-01
相关资源
最近更新 更多