การคัดลอกรหัสมีดังนี้:
<ภาษาสคริปต์ = "JavaScript">
// ค่าพารามิเตอร์แรก
การทดสอบฟังก์ชั่น (A, B, C, D) {
การแจ้งเตือน (อาร์กิวเมนต์ [0]);
-
// อาร์กิวเมนต์ [0] จริง ๆ แล้ว ในทำนองเดียวกันอาร์กิวเมนต์ [1] คือ B, C, D ในทางกลับกัน
</script>
การคัดลอกรหัสมีดังนี้:
<ภาษาสคริปต์ = "JavaScript">
-
ฟังก์ชัน function_name (exp1, exp2, exp3, exp4)
-
var umber = "";
umber = อาร์กิวเมนต์ความยาว;
การแจ้งเตือน (umber);
-
function_name ('a', 'b', 'c', 'd'); สามารถเรียกได้ทั้งหมด
// function_name ("A", "B", "C", "D"); สามารถเรียกได้
-
</script>
1. ใน JavaScript วัตถุอาร์กิวเมนต์เป็นวัตถุที่ค่อนข้างพิเศษซึ่งเป็นคุณสมบัติในตัวของฟังก์ชันปัจจุบัน อาร์กิวเมนต์คล้ายกับอาร์เรย์มาก แต่ไม่ใช่อินสแตนซ์อาร์เรย์ สามารถตรวจสอบได้ด้วยรหัสต่อไปนี้ (แน่นอนในความเป็นจริงในฟังก์ชั่น funcarg มันไม่จำเป็นที่จะเขียนอาร์กิวเมนต์เป็น funcarg.arguments เพียงแค่เขียนอาร์กิวเมนต์)
การคัดลอกรหัสมีดังนี้:
array.prototype.testarg = "ทดสอบ";
ฟังก์ชั่น funcarg () {
การแจ้งเตือน (funcarg.arguments.testarg);
การแจ้งเตือน (funcarg.arguments [0]);
-
การแจ้งเตือน (array ใหม่ (). testarg); // ผลลัพธ์: "ทดสอบ"
Funcarg (10); // ผลลัพธ์: "ไม่ได้กำหนด" "10"
2. ความยาวของวัตถุอาร์กิวเมนต์ถูกกำหนดโดยจำนวนพารามิเตอร์จริงมากกว่าจำนวนพารามิเตอร์ที่เป็นทางการ พารามิเตอร์ที่เป็นทางการเป็นตัวแปรที่เปิดพื้นที่จัดเก็บพื้นที่หน่วยความจำภายในฟังก์ชั่น แต่พวกเขาไม่ได้ทับซ้อนกับพื้นที่หน่วยความจำของวัตถุอาร์กิวเมนต์ เมื่อทั้งข้อโต้แย้งและค่ามีอยู่ค่าจะถูกซิงโครไนซ์ แต่สำหรับหนึ่งในนั้นค่าจะไม่ซิงโครไนซ์สำหรับสถานการณ์ที่ไม่มีค่านี้ สามารถตรวจสอบรหัสต่อไปนี้ได้
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น f (a, b, c) {
การแจ้งเตือน (อาร์กิวเมนต์ความยาว); // ผลลัพธ์: "2"
a = 100;
การแจ้งเตือน (อาร์กิวเมนต์ [0]); // ผลลัพธ์: "100"
อาร์กิวเมนต์ [0] = "qqyumidi";
การแจ้งเตือน (a); // ผลลัพธ์: "qqyumidi"
การแจ้งเตือน (c); // ผลลัพธ์: "ไม่ได้กำหนด"
C = 2012;
การแจ้งเตือน (อาร์กิวเมนต์ [2]); // ผลลัพธ์: "ไม่ได้กำหนด"
-
F (1, 2);
3. จากการประกาศและลักษณะการเรียกของฟังก์ชั่นใน JavaScript จะเห็นได้ว่าฟังก์ชั่นใน JavaScript ไม่สามารถโหลดได้มากเกินไป
ขึ้นอยู่กับพื้นฐานของการโอเวอร์โหลดในภาษาอื่น ๆ : "ค่าส่งคืนของฟังก์ชันแตกต่างกันหรือจำนวนพารามิเตอร์ที่เป็นทางการแตกต่างกัน" เราสามารถวาดข้อสรุปข้างต้น:
ครั้งแรก: ไม่มีคำสั่งดังกล่าวว่าการประกาศฟังก์ชัน JavaScript ส่งคืนประเภทค่า;
ประการที่สอง: จำนวนพารามิเตอร์ที่เป็นทางการในจาวาสคริปต์นั้นเป็นเพียงอย่างเคร่งครัดเพื่ออำนวยความสะดวกในการทำงานของตัวแปรในฟังก์ชั่น ในความเป็นจริงพารามิเตอร์จริงถูกเก็บไว้ในวัตถุอาร์กิวเมนต์
นอกจากนี้ความเข้าใจอย่างลึกซึ้งว่าทำไมฟังก์ชั่นไม่สามารถโหลดมากเกินไปใน JavaScript จากฟังก์ชัน JavaScript เอง: ใน JavaScript ฟังก์ชั่นเป็นวัตถุจริงและชื่อฟังก์ชันคือการอ้างอิงถึงฟังก์ชั่นหรือชื่อฟังก์ชันเองเป็นตัวแปร สำหรับการประกาศฟังก์ชั่นและนิพจน์ฟังก์ชั่นที่แสดงด้านล่างจริง ๆ แล้วข้างต้นนั้นเหมือนกัน (โดยไม่คำนึงถึงความแตกต่างระหว่างการประกาศฟังก์ชั่นและการแสดงออกของฟังก์ชั่น) มันมีประโยชน์มากสำหรับเราที่จะเข้าใจคุณลักษณะที่ฟังก์ชั่นไม่สามารถใช้งานได้มากเกินไปใน JavaScript
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น f (a) {
ส่งคืน + 10;
-
ฟังก์ชั่น f (a) {
กลับ A - 10;
-
// โดยไม่คำนึงถึงความแตกต่างระหว่างการประกาศฟังก์ชั่นและการแสดงออกของฟังก์ชันมันเทียบเท่ากับสิ่งต่อไปนี้
var f = function (a) {
ส่งคืน + 10;
-
var f = function (a) {
กลับ A - 10;
-
4. มีคุณสมบัติที่มีประโยชน์มากในวัตถุอาร์กิวเมนต์: Callee อาร์กิวเมนต์ Callee ส่งคืนการอ้างอิงฟังก์ชั่นปัจจุบันซึ่งวัตถุอาร์กิวเมนต์นี้อยู่ เมื่อใช้การเรียกใช้เรียกใช้ซ้ำให้ใช้อาร์กิวเมนต์ callee แทนชื่อฟังก์ชั่นเอง
ดังนี้:
การคัดลอกรหัสมีดังนี้:
จำนวนฟังก์ชั่น (a) {
ถ้า (a == 1) {
กลับ 1;
-
ส่งคืน a + arguments.callee (-a);
-
var mm = count (10);
การแจ้งเตือน (มม.);