некоторых булеву математику:
!(callback && list[i] !== callback || context && list[i + 1] !== context)
!(!(!callback || list[i] === callback) || !(!context || list[i + 1] === context))
(!callback || list[i] === callback) && (!context || list[i + 1] === context)
Я думаю, что disjunctive normal form намного легче понять, чем отрицание conjunctive normal form.
Для того, чтобы отдельные части легче понять, использовать говоря имена переменных (я не знаю, масштабы этого, вы можете найти что-то лучше):
var rightCallback = !callback || list[i] === callback;
var rightContext = !context || list[i + 1] === context;
if (rightCallback && rightContext) {…}
Err, они сохраняют в массиве 2 разных типа, вместо того, чтобы создавать новый тип и хранить массив этого типа в одиночку ... вздох. – Esailija
Я видел более сложную логику 'if', чем это на сегодняшний день. Тем не менее, я не получаю вашу группу на тестах. –