Заполнение строковой переменной с помощью функции не работает, если переменная является аргументом функции

#arrays #function #arguments

#массивы #функция #аргументы

Вопрос:

Этот код работает: https://jsfiddle.net/Nata_Hamster/b48w3ktx /

 let animal = ['cat', 'dog', 'hamster',]
let dataAnim = '';                    
full_anim(animal);
$('.wrap').html(dataAnim);

function full_anim(arr) {
  for (let i in arr) {
        dataAnim  = `<div class="animal">${arr[i]}</div><br>`;        
    }
}
  

Однако мне нужно иметь dataAnim в качестве аргумента функции. Следующий код не работает: https://jsfiddle.net/Nata_Hamster/fxhpoes8 /

 let animal = ['cat', 'dog', 'hamster',]
let dataAnim = '';                    
full_anim(animal, dataAnim);
$('.wrap').html(dataAnim);

function full_anim(arr, content) {
  for (let i in arr) {
        content  = `<div class="animal">${arr[i]}</div><br>`;         
    }
}
  

Ответ №1:

Попробуйте это:

 let animal = ['cat', 'dog', 'hamster',]
let dataAnim = '';                    
dataAnim = full_anim(animal, dataAnim);
$('.wrap').html(dataAnim);

function full_anim(arr, content) {
  for (let i in arr) {
        content  = `<div class="animal">${arr[i]}</div><br>`;         
    }
  return content;
}
  

Или вы можете сделать это:

 let animal = ['cat', 'dog', 'hamster',]
let data = { anim: '' };                      
full_anim(animal, data);
$('.wrap').html(data.anim);

function full_anim(arr, data) {
  for (let i in arr) {
        data.anim  = `<div class="animal">${arr[i]}</div><br>`;       
    }
}