function findFirstMatchingResult(arr, val){
for(let i = 0, len = arr.length; i < len; i++){
const result = arr[i]();
if(result === val){
return true;
}
}
return false;
}
// if you really want to make it generic, you could do the following:
function findFirstMatchingResult(arr, val){
return function(...params){
for(let i = 0, len = arr.length; i < len; i++){
const result = arr[i].apply(null, params[i]);
if(result === val){
return true;
}
}
return false;
}
}
findFirstMatchingResult([
function(str){
return str.length;
}
])([
'hello'
]);
Обобщенная версия (у функций могут быть аргументы) определенно немного громоздка, чтобы передавать массив для каждой функции, но это хорошая отправная точка. Это также было бы только для примитивов. Как === не будет работать для массива, объектов и т. Д.
Если Вы установите каждый объект в NULL, то они будут автоматически собраны "мусор".
Да, установка в NULL объектов должна быть в порядке … За исключением того, что некоторые детали реализации должны заботиться о с Internet Explorer: его обработка циклических ссылок изворотлива. См. http://msdn.microsoft.com/en-us/library/bb250448.aspx
Циклические ссылки — Когда взаимные ссылки считаются между инфраструктурой Internet Explorer COM и любым механизмом выполнения сценариев, объекты, могут пропустить память
Таким образом, необходимо повредить циклические ссылки в некоторых случаях.