ความต้องการ:
สนุก A() { asyn (parm1, parm2, onsuccess () { }) ;}
สนุก B() {asyn(paem1, parm2, onsuccess(){}) ;}
ฟังก์ชัน B ต้องมีการดำเนินการหลังจากฟังก์ชัน A
การดำเนินการแบบอะซิงโครนัส
ถ้าใช้โดยตรง
เอ();
บี();
ไม่สามารถปฏิบัติตามเงื่อนไขการดำเนินการได้
ลองพิจารณาส่ง B เป็นฟังก์ชันเรียกกลับไปยัง A จากนั้น A จะดำเนินการฟังก์ชัน B ในการดำเนินการสำเร็จ
เอ(บี);
ข้อกำหนดด้านการทำงานสามารถรับรู้ได้
js เป็นแบบเธรดเดียว
1. เมื่อเรียกใช้ฟังก์ชัน หากมีพารามิเตอร์มากกว่าจำนวนคำจำกัดความ พารามิเตอร์เพิ่มเติมจะถูกละเว้น หากมีน้อยกว่าจำนวนพารามิเตอร์ พารามิเตอร์ที่หายไปจะถูกกำหนดค่าที่ไม่ได้กำหนดโดยอัตโนมัติ
2. หากมีการประกาศคำจำกัดความของฟังก์ชันโดยใช้คำสั่งฟังก์ชัน จะไม่สามารถปรากฏในคำสั่งแบบวนซ้ำหรือแบบมีเงื่อนไข แต่หากมีการประกาศคำจำกัดความของฟังก์ชันโดยใช้วิธีลิเทอรัลของฟังก์ชัน คำนิยามดังกล่าวสามารถปรากฏในนิพจน์ js ใดๆ ได้
3. วัตถุข้อโต้แย้ง
อาร์กิวเมนต์อ็อบเจ็กต์ของฟังก์ชันเปรียบเสมือนอาร์เรย์ ซึ่งจะเก็บพารามิเตอร์จริงเมื่อมีการเรียกใช้ฟังก์ชัน คุณสามารถใช้อาร์กิวเมนต์[0], อาร์กิวเมนต์[1], อาร์กิวเมนต์[2]... เพื่ออ้างอิงพารามิเตอร์เหล่านี้ แม้ว่าพารามิเตอร์เหล่านี้ก็ตาม พารามิเตอร์คือเมื่อกำหนดฟังก์ชัน แต่อาร์กิวเมนต์ไม่ใช่วัตถุอาร์เรย์จริง
ฟังก์ชัน a(x,y){
อาร์กิวเมนต์ [0] // ระบุพารามิเตอร์แรก x
อาร์กิวเมนต์ [1] // ระบุพารามิเตอร์แรก y
อาร์กิวเมนต์ [2] // ระบุพารามิเตอร์ที่สามโดยมีเงื่อนไขว่าสามพารามิเตอร์จะถูกส่งผ่านเมื่อเรียกใช้ฟังก์ชัน
-
arguments.length //ระบุจำนวนพารามิเตอร์ที่ส่งผ่านจริง
arguments.callee(x,y) //เรียกตัวเอง}
วัตถุอาร์กิวเมนต์มีแอตทริบิวต์ความยาวซึ่งแสดงถึงจำนวนพารามิเตอร์ที่ส่งผ่านจริงเมื่อมีการเรียกใช้ฟังก์ชัน
วัตถุอาร์กิวเมนต์ยังมีแอตทริบิวต์ผู้เรียกซึ่งใช้เพื่ออ้างอิงฟังก์ชันที่กำลังดำเนินการอยู่ซึ่งมีประโยชน์อย่างยิ่งในฟังก์ชันที่ไม่ระบุชื่อ
4. คุณลักษณะความยาวของฟังก์ชัน (ใช่ ฟังก์ชันยังมีแอตทริบิวต์ความยาวด้วย)
ต่างจาก arguments.length แอตทริบิวต์ length ของฟังก์ชันแสดงถึงจำนวนพารามิเตอร์ที่เป็นทางการเมื่อมีการกำหนดฟังก์ชัน ไม่ใช่จำนวนพารามิเตอร์จริงเมื่อมีการเรียกใช้ฟังก์ชัน คุณสามารถใช้ arguments.callee.length เพื่อเรียกคุณสมบัติความยาวของฟังก์ชันได้