Как передать переменную из одной функции в другую?

В общем вопрос - как из тела функции передать переменную в другую функцию.
Код можно посмотреть здесь https://jsfiddle.net/eynkLx84/
еще продублирую сюда
HTML

<input type = "text" name="add" class = "text-input" id = "text-input" >
<button class = "add" id = "add" name="addb">Add</button>
<div class = "text-area" id = "text-area"></div>  
<button class = "btn" id = "sortname">Sort by name</button>

JS

var firstArr = [];        	
var addclick = function(eventclick){
var secondarr = [];
var textinp = document.getElementById("text-input").value;

var res = firstArr.push(textinp);
document.getElementById('text-area').innerHTML += textinp + '<br>';

//console.log(firstArr);
}

var sortname  = function(sort){
	var textinp = document.getElementById("text-input").value;
var res = firstArr.push(textinp);
var end = firstArr.sort(res);
	console.log(end);
}

var clickbtn = document.getElementById('add');
clickbtn.addEventListener('click', addclick, false);

var clicksort = document.getElementById('sortname');
clicksort.addEventListener('click', sortname, false);

В чем конкретно вопрос: та часть кода, где обработчик передает значения из массива в DOM - это работает (var addclick = function(eventclick)) Этот массив firstArr = [] заполняется. Но потом в следующую функцию сортировки эти данные ( var sortname = function(sort) ) из уже заполненного массива не передаются. То есть: когда мы несколько раз накликали кнопкой Add разных значений в массив и они вывелись в DOM на странице, то уже потом при клике по кнопке SortByName - отсортировать эти данные почему то невозможно. Получается что вторая функция sortname не может получить данные функции addclick. Но массив, который заполняется данными - var firstArr = []; - вынесен глобально. Так почему же вторя функция sortname не может взять оттуда данные?
(если раскомментировать 10 строчку кода //console.log(firstArr); - в консоль будут выводиться данные, которые заполняют массив firstArr при каждом клике по кнопке Add).

Я вывожу в консоль отсортированные данные.

Но одно дело отсортировать данные в массиве, а второе дело - вывести значение из массива на страницу. Наверное ты ожидаешь увидеть отсортированные данные на странице но не видишь этого?

1 лайк

странно, у меня в консоли при нажатии на Sort by name - вот такая ошибка


console.log(end); выдает такую ошибку

Ошибка про параметр передаваемый в метод sort. В моем примере я вызвал ее без параметра.