Ваш пример 2 делает то же самое, что и ваш пример 1.
Но, вероятно, вы не намерены объявлять переменную массива внутри функции во втором примере. В этом случае функция массива вне содержит список всех задач, которые вводит пользователь.
Кроме того, createTextNode принимает строку, а не массив в качестве аргумента. когда вы передаете массив, он преобразует массив задач в разделенную запятыми строку и добавляет в список.
так, в вашей функции add () передайте только последний добавленный элемент методу createTextNode, например
document.createTextNode(array[array.length - 1])
Что касается вашего первого примера, он не хранит входные данные в вашей памяти, поскольку переменная массива объявляется внутри функции и инициализируется как пустой массив - каждый раз, когда вызывается функция, т. Е. Когда добавляется задача. .