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];                  
   }
}

行上有一个额外的右括号

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

应该是

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

如果能提供调试器错误,那将非常有用。我在Chrome开发者控制台中执行了它,它给出了错误:

SyntaxError:意外的令牌)

这使得我们很容易找到这条虚线:

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

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

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

这里有一个额外的右括号。移除它。

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];                  
   };
};

最新更新