Благодаря Энди мы изменили код на
var f = new Function ('a, b, ai, bi, e', 'return' + func);
Обратите внимание, что аргументы должны быть переданы в виде строки, проверьте: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function
По поводу второго вопроса, я думаю, это потому, чтомы пытались сделать функцию сортировки более явной.Например,
sort ([1, 2, 3, 5, 1], '', 'a [1, 1, 2, 3, 5]
Для нас буквальное значение «a Другой пример, «a.age Вот почему я спрашиваю, можем ли мы использовать вместо true или falseиз -1, 0, 1.
Мы продолжаем делать еще несколько небольших тестов и что-то выяснить, хотели бы поделиться со всеми.
Например:
var b = [
{age:27, name:'pop 2', role: 'Programmer'},
{age:19, name:'james', role: 'Accontant'},
{age:19, name:'jerry', role:'Sales Representative'},
{age:22, name:'jerry', role:'Coder'},
{age:19, name:'jerry', role:'Tester'},
{age:14, name:'anna', role: 'Manager'},
{age:19, name:'luke', role:'Analyst'},
{age:27, name:'pop', role: 'Programmer'},
{age:14, name:'anna 2', role: 'Manager'}
];
b.sort(function(a, b) {return a.age - b.age > 0? 1: -1}); // #1
b.sort(function(a, b) {return a.age > b.age}); // #2
b.sort(function(a, b) {return a.age - b.age}); // #3
Хотя приведенные выше сортировки возвращают один и тот же результат, попробуйте следующий:
b.sort(function(a, b) {return a.age - b.age < 0? -1: 1}); // #4
В этом выражении записи по-прежнему упорядочены по возрасту, но порядок в этой же возрастной группе обратный.
# 1 и # 2 случайно совпадают с # 3.Если браузер использует другой алгоритм для реализации функции сортировки, возможно, что # 1 и # 2 будут вести себя как # 4.Если вы строго следите за порядком результата, вам нужно явно вернуть 0, когда 'a' равно элементу 'b'.
Кроме того, как указал Энди, в некоторых случаях (например, # 4), возможно, что ненужные перестановки будут выполнены, если мы не вернем 0 явно, что может повлиять на производительность.
Причина, по которой мы не заметили этого раньше, заключается в том, что нам не важен порядок в пределахгруппа, предоставляющая запись, сортируется по определенному свойству.