Возможно ли получить доступ к свойству внутри функции через функцию обратного вызова?

Daan Ruting спросил: 12 мая 2018 в 05:04 в: javascript

Поэтому мне было интересно, можно ли получить локальную переменную внутри функции через функцию обратного вызова. Например, я мог бы получить доступ к переменной "i" в цикле функции.

function forWithAction(r,callback){
  for(let i = 0; i < r; i++){
    callback();
  }
}forWithAction(5,function(){
  console.log(i);
});

Мне до сих пор не повезло, но я действительно оптимистично отношусь к этой возможности, поэтому Интересно, есть ли там кто-нибудь, кто может дать мне подсказки или ответы.

1 ответ

Есть решение
Eddie Del Rio ответил: 12 мая 2018 в 05:15

С вашим кодом это возможно, но в пределах функции call back, вы хотите передать все переменные, которые вы, возможно, захотите получить в функции. Это как карта, фильтр и сокращение работы.

function forWithAction(r,callback){
  for(let i = 0; i < r; i++){
    callback(i, r);
  }
}
//iVal and rVal are just place holders for i and r that I'm passing into this function
forWithAction(5,function(iVal, rVal){
  console.log(iVal);
});

Пример с картой

function Map(arr, callback)
{
  let output = [];
  let secretVariable = 'I\'m hidden inside :D';
  for(let i = 0; i < arr.length; i++)
  {
    //I'm passing 4 values into my callback. So any call back I create
    //I can access these 4 values
    let val = callback(arr[i], i, arr, secretVariable)
    output.push(val);
  }
  return output;
}

let myArray = [2, 5, 1, 8, 9, 3, 2];

Map(myArray, function(val, ind, arr, secret) {
  console.log('__ARRAY_VALUE__: ', val);
  console.log('__INDEX__(i) :', ind);
  console.log(secret);
  return val;
});