Wajah menggunakan argumen variabel fungsi javascript

Jika fungsi dipanggil dengan argument yang hilang (kurang dari yang dideklarasikan), nilai yang hilang diatur menjadi tidak ditentukan (undefined)

Terkadang hal ini dapat diterima, tetapi terkadang lebih baik untuk menetapkan nilai default ke parameter

kontur

<!DOCTYPE html>
<html>
<body>

<p> Menyetel nilai default ke parameter fungsi. </p>
<p id="demo"></p>

<script>
function myFunction(x, y) {
  if (y === undefined) {
    y = 2;
  }  
  return x * y;
}
document.getElementById("demo").innerHTML = myFunction(4);
</script>

</body>
</html>


ECMAScript 2015 memungkinkan nilai parameter default dalam deklarasi fungsi

________satu_______

Petak Objek

Fungsi JavaScript memiliki objek bawaan yang disebut objek argumentasi

Argumen objek berisi argumen array yang digunakan saat fungsi dipanggil

Dengan cara ini Anda cukup menggunakan fungsi untuk menemukan (misalnya) nilai tertinggi dalam daftar angka

kontur

<!DOCTYPE html>
<html>
<body>

<p> Menemukan angka terbesar. </p>
<p id="demo"></p>

<script>
function findMax() {
  var i;
  var max = -Infinity;
  for(i = 0; i < arguments.length; i++) {
    if (arguments[i] > max) {
      max = arguments[i];
    }
  }
  return max;
} 
document.getElementById("demo").innerHTML = findMax(4, 5, 6);
</script>

</body>
</html>


Atau buat fungsi untuk menjumlahkan semua input nilai

<!DOCTYPE html>
<html>
<body>

<p> Jumlah semua argumen: </p>
<p id="demo"></p>

<script>
function sumAll() {
  var i;
  var sum = 0;
  for(i = 0; i < arguments.length; i++) {
    sum += arguments[i];
  }
  return sum;
}
document.getElementById("demo").innerHTML = sumAll(1, 123, 500, 115, 44, 88);
</script>

</body>
</html>

Jika suatu fungsi dipanggil dengan terlalu banyak argumen (lebih dari yang dideklarasikan), argumen ini dapat dicapai dengan menggunakan argumen objek

Sementara @roufamatic memang menunjukkan penggunaan kata kunci argumen dan @Ken menunjukkan contoh yang bagus dari sebuah objek untuk penggunaan, saya merasa tidak benar-benar membahas apa yang terjadi dalam hal ini dan dapat membingungkan pembaca di masa depan atau menanamkan praktik buruk karena tidak secara eksplisit menyatakan fungsi /method dimaksudkan untuk mengambil sejumlah variabel argumen/parameter

function varyArg () {
    return arguments[0] + arguments[1];
}
_

Ketika pengembang lain melihat kode Anda, sangat mudah untuk berasumsi bahwa fungsi ini tidak menggunakan parameter. Terutama jika pengembang itu tidak memiliki kata kunci argumen. Karena itu, merupakan ide bagus untuk mengikuti panduan gaya dan konsisten. Saya akan menggunakan Google untuk semua contoh

Mari kita nyatakan secara eksplisit fungsi yang sama memiliki parameter variabel

function varyArg (var_args) {
    return arguments[0] + arguments[1];
}

Parameter objek VS var_args

Mungkin ada kalanya suatu objek diperlukan karena ini adalah satu-satunya metode praktik terbaik yang disetujui dan dianggap sebagai peta data. Susunan asosiatif tidak disukai dan tidak dianjurkan

SIDENOTE. Kata kunci argumen sebenarnya mengembalikan objek menggunakan angka sebagai kuncinya. Warisan prototipe juga merupakan keluarga objek. Lihat akhir jawaban untuk penggunaan array yang tepat di JS

Dalam hal ini kita juga dapat menyatakannya secara eksplisit. catatan. Konvensi penamaan ini tidak disediakan oleh Google tetapi merupakan contoh deklarasi eksplisit dari tipe param. Ini penting jika Anda ingin membuat pola pengetikan yang lebih ketat dalam kode Anda

function varyArg (args_obj) {
    return args_obj.name+" "+args_obj.weight;
}
varyArg({name: "Brian", weight: 150});
_

Pilih yang mana?

Ini tergantung pada fungsi dan kebutuhan program Anda. Jika misalnya Anda hanya ingin mengembalikan basis nilai pada proses iteratif di semua argumen yang diberikan maka pasti tetap menggunakan kata kunci argumen. Jika Anda memerlukan definisi untuk argumen dan pemetaan data Anda, maka metode objek adalah caranya. Mari kita lihat dua contoh dan selesai

Penggunaan argumen

function sumOfAll (var_args) {
    return arguments.reduce(function(a, b) {
        return a + b;
    }, 0);
}
sumOfAll(1,2,3); // returns 6

Penggunaan objek

function myObjArgs(args_obj) {
    // MAKE SURE ARGUMENT IS AN OBJECT OR ELSE RETURN
    if (typeof args_obj !== "object") {
        return "Arguments passed must be in object form!";
    }

    return "Hello "+args_obj.name+" I see you're "+args_obj.age+" years old.";
}
myObjArgs({name: "Brian", age: 31}); // returns 'Hello Brian I see you're 31 years old
_

Mengakses array alih-alih objek (". args" Parameter sisanya)

Seperti disebutkan di bagian atas jawaban, kata kunci argumen sebenarnya mengembalikan sebuah objek. Karena itu, metode apa pun yang ingin Anda gunakan untuk array harus dipanggil. Contoh dari ini