มันมาจากการคิดคำถามทดสอบที่เป็นลายลักษณ์อักษร โดยปกติจะไม่มีใครแก้ไขค่าพารามิเตอร์ภายในฟังก์ชัน จะมีการกล่าวถึงที่นี่เท่านั้น มีสามวิธีในการแก้ไข
1. แก้ไขพารามิเตอร์อย่างเป็นทางการโดยตรงเมื่อประกาศฟังก์ชัน
คัดลอกรหัสรหัสดังต่อไปนี้:
ฟังก์ชัน f1(a) {
การแจ้งเตือน (ก);
a = 1;//แก้ไขพารามิเตอร์อย่างเป็นทางการ
การแจ้งเตือน (1 === ก);
การแจ้งเตือน (1 === ข้อโต้แย้ง [0]);
-
f1(10);
ฟังก์ชัน f1 กำหนดพารามิเตอร์ a เมื่อเรียก พารามิเตอร์ 10 จะถูกส่งผ่าน 10 จะถูกแสดงออกมาก่อน a ถูกแก้ไขเป็น 1 จริงจะถูกแสดงสองครั้ง และ a และอาร์กิวเมนต์[0] ต่างก็เป็น 1
2. แก้ไขผ่านวัตถุอาร์กิวเมนต์ภายในฟังก์ชัน
คัดลอกรหัสรหัสดังต่อไปนี้:
ฟังก์ชัน f2(a) {
การแจ้งเตือน (ก);
ข้อโต้แย้ง [0] = 1; // แก้ไขข้อโต้แย้ง
การแจ้งเตือน (1 === ก);
การแจ้งเตือน (1 === ข้อโต้แย้ง [0]);
-
เอฟเฟกต์จะเหมือนกับฟังก์ชัน f1
3. ตัวแปรท้องถิ่นที่ประกาศภายในฟังก์ชันมีชื่อเดียวกันกับพารามิเตอร์ที่เป็นทางการ
คัดลอกรหัสรหัสดังต่อไปนี้:
ฟังก์ชัน f3(a) {
การแจ้งเตือน (ก);
var a = 1;//ประกาศตัวแปรท้องถิ่น a และกำหนดค่าเป็น 1
การแจ้งเตือน (1 === ก);
การแจ้งเตือน (ข้อโต้แย้ง [0]);
-
f3(10);
ฟังก์ชัน f3 กำหนดพารามิเตอร์อย่างเป็นทางการ a และตัวแปรเฉพาะที่ a ถูกประกาศภายในฟังก์ชันและกำหนดค่าเป็น 1 แต่ที่นี่ยังคงเป็นพารามิเตอร์ a ซึ่งสามารถพิสูจน์ได้จากข้อเท็จจริงที่ว่าอาร์กิวเมนต์[0] ที่ปรากฏขึ้นที่ส่วนท้าย ถูกแก้ไขเป็น 1
4. หากคุณเพิ่งประกาศตัวแปรโลคัล a โดยไม่กำหนดค่า สถานการณ์จะแตกต่างออกไป
คัดลอกรหัสรหัสดังต่อไปนี้:
ฟังก์ชัน f3(a) {
var a;//การประกาศเท่านั้น ไม่มีการมอบหมาย
การแจ้งเตือน (ก);
การแจ้งเตือน (ข้อโต้แย้ง [0]);
-
f3(10);
ในขณะนี้ ป๊อปอัปทั้งหมดมี 10 รายการ ไม่ใช่ไม่ได้กำหนด