Если я bind
функция find
в javascript, я могу сделать следующее:
const _array = [4,10,6,5,20];
const loop = Array.prototype.find.bind(_array);
const r = loop(function (x) {
return x === 6;
});
console.log(`Final result => ${r}`); // here prints: Final result => 6
Как вы можете видеть, в в связном loop
функция Iиметь обратный вызов , возвращаемый find
.Все работает и все нормально ...
Но, пытаясь смоделировать что-то подобное, я закончил с этим:
function loop(a,callback) {
for(i=0;i<a.length;i++)
callback(a[i]);
};
const r = loop([4,10,6,5,20], function (x) {
console.log("x value", x);
return x===6; // need to break the loop function and return to 'r' the 'x' value
});
console.log(`Final result => ${r}`); // here would print the value of x, that would be 6
и получаю:
x value 4
x value 10
x value 6
x value 5
x value 20
undefined
чтоозначает, что return x===6
внутри функции r
работает неправильно, потому что for-loop
продолжается до конца.
Итак, мой вопрос:
Как можно сломать функцию loop
при x===6
и вернуть значение x
?