E
E
Evgenij_nechujveter2017-04-20 03:01:19
JavaScript
Evgenij_nechujveter, 2017-04-20 03:01:19

Why is the array not being added?

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

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

}


mergeArray();

Answer the question

In order to leave comments, you need to log in

1 answer(s)
I
Islam Ibakaev, 2017-04-20
@Evgenij_nechujveter

Evgenij_nechujveter :
your code can be presented a little differently to understand the essence

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();

impure function (imperative approach)
either don't declare local a and b (remove a, b from function declaration) and work directly with global a and b
pure function (functional approach)
or leave it as is and just call the function with two arguments (to assign there will be no local a and b corresponding arrays as values ​​and no errors, since arrays have a method .concat()"in service")

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question