ผ่านคุ้ม
ในผ่านตามค่า ฟังก์ชันถูกเรียกโดยการส่งผ่านค่าของตัวแปรโดยตรงเป็นอาร์กิวเมนต์ การเปลี่ยนอาร์กิวเมนต์ภายในฟังก์ชันจะไม่ส่งผลต่อตัวแปรที่ส่งผ่านจากภายนอกฟังก์ชัน 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}