显示模块模式语法错误

时间:2013-05-20 14:55:55

标签: javascript

也许这个问题不太具有建设性,但似乎我可以弄清楚为什么我会遇到这种语法错误:

 var operations = function () {
            function computeTotalPrice(elem) {
                var totalpriceafter = 0;
                 $(".totalForProductNotDeleted").each(function () {
                    var pp = parseFloat($(this).html().toString().replace(",", "."));
                    totalpriceafter += pp;
                });
                return totalpriceafter;
            };
           function HightLightChangedPrices(elem) {
                elem.parent().parent().parent().find(".totalForProduct").effect("highlight");
                $("#totalPrice").effect("highlight");
            };
            return
            {
                computeTotalPrice : computeTotalPrice,
                HightLightChangedPrices : HightLightChangedPrices / I get expected ; 
            };

        };

1 个答案:

答案 0 :(得分:6)

return后面必须跟一个值。

        return
        {
            computeTotalPrice : computeTotalPrice,
            HightLightChangedPrices : HightLightChangedPrices 
        };

应该是

        return {
            computeTotalPrice : computeTotalPrice,
            HightLightChangedPrices : HightLightChangedPrices 
        };

问题在于“限制制作”。 http://es5.github.io/#x5.1.6

  

如果短语“[此处没有LineTerminator]”出现在句法语法生成的右侧,则表示生产是限制生产:如果输入中出现LineTerminator,则可能无法使用它在指定的位置流。例如,制作:

     

ReturnStatement
return [此处没有LineTerminator] 表达式 opt { {1}}

JavaScript解析器会看到你的代码并解析第一行,;然后解析行终止符,然后它inserts a semicolon,然后进入下一行。然后它会看到return并将其解释为语句块的开头,因为顶级Expression Statement无法以{开头:

  

ExpressionStatement
[lookahead∉{{{}]表达式 function

在街区内,

;

是有效的labelled statement,但是 computeTotalPrice : computeTotalPrice, HightLightChangedPrices 无法有效地跟随一个语句,这就是为什么它要求分号的原因。