function longestString() { let longest = ''; for (let i = 0; i < arguments.length; i++) { if (arguments[i].length > longest.length) { longest = arguments[i]; } } return longest; } 3 adalah objek mirip function longestString() { let longest = ''; for (let i = 0; i < arguments.length; i++) { if (arguments[i].length > longest.length) { longest = arguments[i]; } } return longest; } 4 yang dapat diakses di dalam fungsi yang berisi nilai argumen yang diteruskan ke fungsi tersebut
Catatan. Dalam kode modern, parameter istirahat harus lebih disukai
Objek function longestString() { let longest = ''; for (let i = 0; i < arguments.length; i++) { if (arguments[i].length > longest.length) { longest = arguments[i]; } } return longest; } 3 adalah variabel lokal yang tersedia dalam semua fungsi non-panah. Anda bisa merujuk ke argumen fungsi di dalam fungsi itu dengan menggunakan objek function longestString() { let longest = ''; for (let i = 0; i < arguments.length; i++) { if (arguments[i].length > longest.length) { longest = arguments[i]; } } return longest; } 3 nya. Ini memiliki entri untuk setiap argumen fungsi dipanggil, dengan indeks entri pertama di function longestString() { let longest = ''; for (let i = 0; i < arguments.length; i++) { if (arguments[i].length > longest.length) { longest = arguments[i]; } } return longest; } 7
Misalnya, jika suatu fungsi dilewatkan 3 argumen, Anda dapat mengaksesnya sebagai berikut
arguments[0] // first argument arguments[1] // second argument arguments[2] // third argument
Objek function longestString() { let longest = ''; for (let i = 0; i < arguments.length; i++) { if (arguments[i].length > longest.length) { longest = arguments[i]; } } return longest; } 3 berguna untuk fungsi yang dipanggil dengan lebih banyak argumen daripada yang dinyatakan secara formal untuk diterima, disebut fungsi variadik, seperti function longestString() { let longest = ''; for (let i = 0; i < arguments.length; i++) { if (arguments[i].length > longest.length) { longest = arguments[i]; } } return longest; } 9. Fungsi contoh ini menerima sejumlah argumen string dan mengembalikan yang terpanjang
function longestString() { let longest = ''; for (let i = 0; i < arguments.length; i++) { if (arguments[i].length > longest.length) { longest = arguments[i]; } } return longest; }
Anda dapat menggunakan arguments[1] = 'new value'; _0 untuk menghitung berapa banyak argumen yang digunakan untuk memanggil fungsi tersebut. Jika Anda ingin menghitung berapa banyak parameter yang diterima oleh suatu fungsi, periksa properti arguments[1] = 'new value'; 1 fungsi itu
Setiap indeks argumen juga dapat diatur atau dipindahkan
arguments[1] = 'new value'; _
Fungsi non-ketat yang hanya memiliki parameter sederhana (yaitu, tanpa istirahat, default, atau parameter yang didestrukturisasi) akan menyinkronkan nilai baru parameter dengan objek function longestString() { let longest = ''; for (let i = 0; i < arguments.length; i++) { if (arguments[i].length > longest.length) { longest = arguments[i]; } } return longest; } 3, dan sebaliknya
function func(a) { arguments[0] = 99; // updating arguments[0] also updates a console.log(a); } func(10); // 99 function func2(a) { a = 99; // updating a also updates arguments[0] console.log(arguments[0]); } func2(10); // 99
Fungsi non-ketat yang diteruskan parameter istirahat, default, atau didestrukturisasi tidak akan menyinkronkan nilai baru yang ditetapkan ke parameter di badan fungsi dengan objek function longestString() { let longest = ''; for (let i = 0; i < arguments.length; i++) { if (arguments[i].length > longest.length) { longest = arguments[i]; } } return longest; } 3. Sebaliknya, objek function longestString() { let longest = ''; for (let i = 0; i < arguments.length; i++) { if (arguments[i].length > longest.length) { longest = arguments[i]; } } return longest; } _3 dalam fungsi tidak ketat dengan parameter kompleks akan selalu mencerminkan nilai yang diteruskan ke fungsi saat fungsi dipanggil
function funcWithDefault(a = 55) { arguments[0] = 99; // updating arguments[0] does not also update a console.log(a); } funcWithDefault(10); // 10 function funcWithDefault2(a = 55) { a = 99; // updating a does not also update arguments[0] console.log(arguments[0]); } funcWithDefault2(10); // 10 // An untracked default parameter function funcWithDefault3(a = 55) { console.log(arguments[0]); console.log(arguments.length); } funcWithDefault3(); // undefined; 0
Ini adalah perilaku yang sama yang ditunjukkan oleh all , terlepas dari jenis parameter yang diteruskannya. Artinya, menetapkan nilai baru ke parameter dalam isi fungsi tidak akan memengaruhi objek function longestString() { let longest = ''; for (let i = 0; i < arguments.length; i++) { if (arguments[i].length > longest.length) { longest = arguments[i]; } } return longest; } 3, dan menetapkan nilai baru ke indeks function longestString() { let longest = ''; for (let i = 0; i < arguments.length; i++) { if (arguments[i].length > longest.length) { longest = arguments[i]; } } return longest; } 3 tidak akan memengaruhi nilai parameter, meskipun fungsi hanya memiliki parameter sederhana
Catatan. Anda tidak dapat menulis direktif arguments[1] = 'new value'; 7 di badan definisi fungsi yang menerima parameter rest, default, atau destructed. Melakukannya akan menimbulkan kesalahan sintaksis
function longestString() { let longest = ''; for (let i = 0; i < arguments.length; i++) { if (arguments[i].length > longest.length) { longest = arguments[i]; } } return longest; } 3 adalah objek seperti array, yang berarti bahwa function longestString() { let longest = ''; for (let i = 0; i < arguments.length; i++) { if (arguments[i].length > longest.length) { longest = arguments[i]; } } return longest; } 3 memiliki properti arguments[1] = 'new value'; 1 dan properti yang diindeks dari nol, tetapi tidak memiliki metode bawaan function longestString() { let longest = ''; for (let i = 0; i < arguments.length; i++) { if (arguments[i].length > longest.length) { longest = arguments[i]; } } return longest; } 4 seperti function func(a) { arguments[0] = 99; // updating arguments[0] also updates a console.log(a); } func(10); // 99 function func2(a) { a = 99; // updating a also updates arguments[0] console.log(arguments[0]); } func2(10); // 99 2 atau function func(a) { arguments[0] = 99; // updating arguments[0] also updates a console.log(a); } func(10); // 99 function func2(a) { a = 99; // updating a also updates arguments[0] console.log(arguments[0]); } func2(10); // 99 3. Namun, itu dapat dikonversi menjadi function longestString() { let longest = ''; for (let i = 0; i < arguments.length; i++) { if (arguments[i].length > longest.length) { longest = arguments[i]; } } return longest; } _4 nyata, menggunakan salah satu dari function func(a) { arguments[0] = 99; // updating arguments[0] also updates a console.log(a); } func(10); // 99 function func2(a) { a = 99; // updating a also updates arguments[0] console.log(arguments[0]); } func2(10); // 99 5, function func(a) { arguments[0] = 99; // updating arguments[0] also updates a console.log(a); } func(10); // 99 function func2(a) { a = 99; // updating a also updates arguments[0] console.log(arguments[0]); } func2(10); // 99 6, atau menyebar sintaks
const args = Array.prototype.slice.call(arguments); // or const args = Array.from(arguments); // or const args = [...arguments];
Untuk kasus penggunaan umum, menggunakannya sebagai objek seperti array sudah cukup, karena keduanya dapat diulang dan memiliki arguments[1] = 'new value'; 1 dan indeks angka. Misalnya, function func(a) { arguments[0] = 99; // updating arguments[0] also updates a console.log(a); } func(10); // 99 function func2(a) { a = 99; // updating a also updates arguments[0] console.log(arguments[0]); } func2(10); // 99 _8 menerima objek seperti array
function midpoint() { return (Math.min.apply(null, arguments) + Math.max.apply(null, arguments)) / 2; } console.log(midpoint(3, 1, 4, 1, 5)); // 3
function func(a) { arguments[0] = 99; // updating arguments[0] also updates a console.log(a); } func(10); // 99 function func2(a) { a = 99; // updating a also updates arguments[0] console.log(arguments[0]); } func2(10); // 99 9 Tidak digunakan lagi
Referensi ke fungsi yang sedang dieksekusi yang dimiliki oleh argumen. Dilarang dalam mode ketat
arguments[1] = 'new value'; _0Jumlah argumen yang diteruskan ke fungsi
function funcWithDefault(a = 55) { arguments[0] = 99; // updating arguments[0] does not also update a console.log(a); } funcWithDefault(10); // 10 function funcWithDefault2(a = 55) { a = 99; // updating a does not also update arguments[0] console.log(arguments[0]); } funcWithDefault2(10); // 10 // An untracked default parameter function funcWithDefault3(a = 55) { console.log(arguments[0]); console.log(arguments.length); } funcWithDefault3(); // undefined; 0 _1Mengembalikan objek iterator Array baru yang berisi nilai untuk setiap indeks di function longestString() { let longest = ''; for (let i = 0; i < arguments.length; i++) { if (arguments[i].length > longest.length) { longest = arguments[i]; } } return longest; } 3
Contoh ini mendefinisikan fungsi yang menggabungkan beberapa string. Satu-satunya argumen formal fungsi adalah string yang berisi karakter yang memisahkan item untuk digabungkan
function myConcat(separator) { const args = Array.prototype.slice.call(arguments, 1); return args.join(separator); }
Anda dapat memberikan argumen sebanyak yang Anda suka ke fungsi ini. Ini mengembalikan daftar string menggunakan setiap argumen dalam daftar
// returns "red, orange, blue" myConcat(', ', 'red', 'orange', 'blue'); // returns "elephant; giraffe; lion; cheetah" myConcat('; ', 'elephant', 'giraffe', 'lion', 'cheetah'); // returns "sage. basil. oregano. pepper. parsley" myConcat('. ', 'sage', 'basil', 'oregano', 'pepper', 'parsley');
Contoh ini mendefinisikan fungsi yang membuat string berisi HTML untuk daftar. Satu-satunya argumen formal untuk fungsi adalah string yang function funcWithDefault(a = 55) { arguments[0] = 99; // updating arguments[0] does not also update a console.log(a); } funcWithDefault(10); // 10 function funcWithDefault2(a = 55) { a = 99; // updating a does not also update arguments[0] console.log(arguments[0]); } funcWithDefault2(10); // 10 // An untracked default parameter function funcWithDefault3(a = 55) { console.log(arguments[0]); console.log(arguments.length); } funcWithDefault3(); // undefined; 0 3 jika daftar tidak diurutkan (berpoin), atau function funcWithDefault(a = 55) { arguments[0] = 99; // updating arguments[0] does not also update a console.log(a); } funcWithDefault(10); // 10 function funcWithDefault2(a = 55) { a = 99; // updating a does not also update arguments[0] console.log(arguments[0]); } funcWithDefault2(10); // 10 // An untracked default parameter function funcWithDefault3(a = 55) { console.log(arguments[0]); console.log(arguments.length); } funcWithDefault3(); // undefined; 0 4 jika daftar harus diurutkan (bernomor). Fungsi tersebut didefinisikan sebagai berikut
function list(type) { let html = `<${type}l><li>`; const args = Array.prototype.slice.call(arguments, 1); html += args.join('</li><li>'); html += `</li></${type}l>`; // end list return html; }
Anda dapat meneruskan sejumlah argumen ke fungsi ini, dan menambahkan setiap argumen sebagai item daftar ke daftar tipe yang ditunjukkan. Sebagai contoh