@Evgenij_nechujveter

Почему не происходит сложение массива?

var a = [2,1];
var b = [9,5];

function mergeArray(a, b) {
    var array = a.concat(b);
    document.write(array);

}


mergeArray();
  • Вопрос задан
  • 194 просмотра
Решения вопроса 1
devellopah
@devellopah
Evgenij_nechujveter:

твой код можно представить немного по-другому для понимания сути

var a = [2,1];
var b = [9,5];
var mergeArray = function() {
	var a, b, array; // изначально undefined
	// поскольку в вызове функции ты не передал значения, чтобы присвоить их переменным a и b, они так и остаются undefined
	// здесь ты пытаешься вызвать метод .concat() у undefined, должна вылетать ошибка по этому поводу
	// ты ожидаешь что a и b будут взяты из глобального пространства, но этого не произойдёт, поскольку здесь внутри функции (то есть в локальном пространстве) ты объявил переменные c точно такими же идентификаторами, поэтому они "перетерут" глобальных "тёзок".
	array = a.concat(b); // undefined.concat(undefined);
};

mergeArray();


нечистая функция (императивный подход)
либо не объявляешь локальные a и b (убираешь a, b из объявления функции) и работаешь напрямую с глобальными a и b

чистая функция (функциональный подход)
либо оставляешь как есть и просто вызываешь функцию с двумя аргументами (чтобы присвоить локальным a и b соответствующие массивы в качестве значений и ошибок не будет, поскольку у массивов есть метод .concat() "на вооружении")
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы