2012-02-09 68 views
0

好吧,我或我工作的某人在某处打破了语法,我不确定在哪里,因为调试器给我一些随机的错误。无论如何,这里的功能,我想我在某个地方丢失了一个支架,但这只是由于某种原因回避我。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

有上线

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

一个额外的右括号应该

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

这将是有用的,如果能提供反正调试错误。我exectued它在Chrome开发者控制台,它给了错误:

SyntaxError: Unexpected token)

这使得它容易找到了这个虚线:

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

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

return ((A < B) ? -1 : (A > B) ? +1 : 0) * [-1,1][+!!reverse]; 
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];     
    }; 
};