javascript语法错误

时间:2012-02-09 00:03:49

标签: javascript

好吧,我或我合作的人在这里打破了语法,我不确定在哪里,因为调试器给了我一些随机的错误。无论如何这里是功能,我想我在某个地方错过了一个支架,但这只是因为某些原因而躲避我。

var sort_by = function(field, reverse, primer) {

   var key = function (x) {return primer ? primer(x[field]) : x[field]};

   return function (a,b) {
       var A = key(a), B = key(b);
       return ((A < B) ? -1 : (A > B) ? +1 : 0)) * [-1,1][+!!reverse];                  
   }
}

3 个答案:

答案 0 :(得分:3)

行上有一个额外的右括号

return ((A < B) ? -1 : (A > B) ? +1 : 0))

应该是

return ((A < B) ? -1 : (A > B) ? +1 : 0) ...etc

答案 1 :(得分:1)

如果无论如何都能提供调试器错误将会很有用。我在Chrome开发者控制台中对其进行了处理,但它出现了错误:

  

SyntaxError:意外的令牌)

这使得很容易找到这条断线:

return ((A < B) ? -1 : (A > B) ? +1 : 0)) * [-1,1][+!!reverse]; 

你有不平衡的括号。它应该是:

return ((A < B) ? -1 : (A > B) ? +1 : 0) * [-1,1][+!!reverse]; 

答案 2 :(得分:1)

这里有一个额外的结束括号。删除它。

return ((A < B) ? -1 : (A > B) ? +1 : 0)) * [-1,1][+!!reverse];

另外,分号一切。

var sort_by = function(field, reverse, primer) {
   var key = function(x) {
       return primer ? primer(x[field]) : x[field];
   };

   return function(a, b) {
       var A = key(a), B = key(b);
       return ((A < B) ? -1 : (A > B) ? +1 : 0) * [-1, 1][+!!reverse];                  
   };
};