Exercício Use a Cabeça Javascript

Fala galera. To estudando JS pelo livro Use a Cabeça e empaquei no exercício abaixo.
Segue meu código:

var passengers = [
	{name: "Jane Doloop", paid: true},
	{name:"Dr. Evel", paid: true},
	{name: "Sue Property", paid: false},
	{name: "John Funcall", paid: true}
]

function processPassengers (passengers, testFunction) {
	for (var i = passengers.length - 1; i >= 0; i--) {
		if (testFunction (passengers[i])) {
			return false;
		}
	}
	return true;
}

function checkNoFlyList(passenger){
	return (passenger.name === "Dr. Evel");
}

function checkPaid (passenger){
	return (!passenger.paid);
}

var allCanFly = processPassengers(passengers, checkNoFlyList);
if (!allCanFly) {
	console.log("The plane can`t take off: we have a passenger on the no-fly-list.");
}

var allPaid = processPassengers(passengers, checkPaid);
if (allPaid) {
	console.log("The plane can`t take off; not everyone has paid");
}

Mas quando carrego meu código recebo o erro seguinte:

Uncaught ReferenceError: testfunction is not defined
at processPassengers (testedevoo.js:14)
at testedevoo.js:29

Minhas dúvidas:
1- A primeira dúvida é o próprio erro depurado ao carregar o código.
2- A segunda é: como posso passar “passenger” como argumento para as minhas funções “checkNoFlyList” e “checkPaid” se não declarei essa variável em lugar nenhum?

Oi Julio,

Respondendo tuas perguntas:

1 - eu copiei teu código e coloquei no console do Chrome e não deu erro algum O.o
Tenta copiar e colar tudo que está aqui e ver o que acontece

2 - Do jeito que essa função está sendo chamada, esse teu argumento ‘passenger’ poderia ser qualquer valor, até mesmo ‘batata’. Porque ao invocar a função está sendo dito para esses métodos (checkNoFlyList e checkPaid) que passenger é um item de passengers - aí sim a variável que foi criada na linha 1.

Espero ter ajudado!

a função testFunction onde está?

Está ali no argumento. É a mesma coisa do passenger, podia ser ‘morango’, mas morango não diz muita coisa né? O que o testFunction faz é dizer se isso é true ou false. Se tu adicionar um console.log(testFunction (passengers[i])) na linha seguinte ao for(var i…) vai ver que é isso que essa função faz. Agora, vou te dizer que esse código ta bem confuso. Ele retorna falso quando algo é true haha

Nas páginas seguintes do livro ele explica o que está acontecendo?