ผ่านคุ้ม
ในผ่านตามค่า ฟังก์ชันถูกเรียกโดยการส่งผ่านค่าของตัวแปรโดยตรงเป็นอาร์กิวเมนต์ การเปลี่ยนอาร์กิวเมนต์ภายในฟังก์ชันจะไม่ส่งผลต่อตัวแปรที่ส่งผ่านจากภายนอกฟังก์ชัน Javascript ส่งต่อตามค่า . เสมอ ดังนั้นการเปลี่ยนค่าของตัวแปรจะไม่เปลี่ยนค่าพื้นฐาน (สตริงหรือตัวเลข)
ในตัวอย่างต่อไปนี้ ตัวแปร 'a' ได้กำหนดค่า 1 แต่ภายในฟังก์ชัน 'change' มันถูกกำหนดค่าด้วยค่า 2 เนื่องจาก javascript เป็น ส่งผ่านค่า เสมอ เอาต์พุตที่แสดงจะเป็น '1' แต่ไม่ใช่ '2'
ตัวอย่าง
<html> <body> <script> let a = 1; let change = (val) => { val = 2 } change(a); document.write(a); </script> </body> </html>
ผลลัพธ์
1
ผ่านโดยการอ้างอิง
มีบางกรณีที่ส่งผ่านที่อยู่แทนการโต้แย้งเพื่อเรียกใช้ฟังก์ชัน ในขณะนั้น การเปลี่ยนค่าภายในฟังก์ชันจะส่งผลต่อตัวแปรที่ส่งผ่านจากภายนอกฟังก์ชัน สิ่งนี้เรียกว่า ผ่านโดยการอ้างอิง . ในจาวาสคริปต์ส่วนใหญ่อาร์เรย์และอ็อบเจ็กต์จะตาม ส่งผ่านโดยการอ้างอิง
ในตัวอย่างต่อไปนี้ วัตถุชื่อ 'a' ถูกประกาศนอกฟังก์ชัน 'เปลี่ยนแปลง' ในที่นี้ เราควรสังเกตว่าตัวแปร 'a' กลายพันธุ์แต่ไม่ได้กำหนดค่า 2 ดังที่แสดงในตัวอย่างที่ 2 ผ่านโดยการอ้างอิง เกิดขึ้นเมื่อ กลายพันธุ์ ได้เกิดขึ้น.
ตัวอย่าง-1
<html> <body> <script> let a = {num:1}; let change = (val) => { val.num = 2 } change(a); document.write(JSON.stringify(a)); </script> </body> </html>
ผลลัพธ์
{"num":2}
ในตัวอย่างต่อไปนี้แทน การกลายพันธุ์ , ตัวแปร 'a' ได้ กำหนด ด้วยค่า 2 ดังนั้น ส่งต่อค่า เกิดขึ้นและจะไม่มีผลกระทบต่อตัวแปรภายนอก
ตัวอย่าง-2
<html> <body> <script> let a = {num : 1}; let change = (val) => { val = {num :2}; } change(a); document.write(JSON.stringify(a)); </script> </body> </html>
ผลลัพธ์
{"num":1}