好吧,我或我的同事在某个地方破坏了这里的语法,我不确定在哪里,因为调试器会给我一些随机的乱码作为错误。不管怎么说,这是函数,我想我在某个地方漏掉了一个括号,但这只是出于某种原因逃避我。
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];
};
};