javascript - with - tag title w3school




Passando uma matriz como um parâmetro de função em JavaScript (7)

Eu gostaria de chamar uma função usando uma matriz como parâmetros:

const x = ['p0', 'p1', 'p2'];
call_me(x[0], x[1], x[2]); // I don't like it

function call_me (param0, param1, param2 ) {
  // ...
}

Existe uma maneira melhor de passar o conteúdo de x para call_me() ?


Os argumentos da função também podem ser Arrays:

function foo([a,b,c], d){
  console.log(a,b,c,d);
}

foo([1,2,3], 4)

Claro que também se pode usar spread :

function foo(a, b, c, d){
  console.log(a, b, c, d);
}

foo(...[1, 2, 3], 4)


1-você pode juntar a matriz em uma string
2-passar para funcionar
Divisão de 3 chamadas

var fruits = ["Banana", "Orange", "Apple", "Mango"];
function myFunction(name)
{
    var nameArray = name.split(',');
.
.
.
}

método de chamada:

myFunction(fruits.join(','));

ou até mesmo

myFunction("orange,Apple,fruits");

Ao usar o operador de propagação, devemos observar que ele deve ser o último ou único parâmetro passado. Senão irá falhar.

function callMe(...arr){ //valid arguments
    alert(arr);
}

function callMe(name, ...arr){ //valid arguments
    alert(arr);
}

function callMe(...arr, name){ //invalid arguments
    alert(arr);
}

Se você precisar passar uma matriz como o argumento inicial que você pode fazer:

function callMe(arr, name){
    let newArr = [...arr];
    alert(newArr);
}

Assumindo que call_me é uma função global, você não espera que isso seja definido.

var x = ['p0', 'p1', 'p2'];
call_me.apply(null, x);

No padrão ES6 existe um novo operador de spread ... que faz exatamente isso.

call_me(...x)

É suportado por todos os principais navegadores, exceto para o IE.

O operador de propagação pode fazer muitas outras coisas úteis, e a documentação vinculada faz um bom trabalho em mostrar isso.


Observe isso

function FollowMouse() {
    for(var i=0; i< arguments.length; i++) {
        arguments[i].style.top = event.clientY+"px";
        arguments[i].style.left = event.clientX+"px";
    }

};

// ---------------------------

página html

<body onmousemove="FollowMouse(d1,d2,d3)">

<p><div id="d1" style="position: absolute;">Follow1</div></p>
<div id="d2" style="position: absolute;"><p>Follow2</p></div>
<div id="d3" style="position: absolute;"><p>Follow3</p></div>


</body>

pode chamar função com qualquer Args

<body onmousemove="FollowMouse(d1,d2)">

ou

<body onmousemove="FollowMouse(d1)">





call