พารามิเตอร์ของฟังก์ชันภายนอกและภายในใน JavaScript
ลองทำให้ทั้งฟังก์ชันภายนอกและฟังก์ชันภายในรับพารามิเตอร์:
function test(num) {
function func(localNum) {
console.log(localNum);
}
}
ส่งพารามิเตอร์ของฟังก์ชันภายนอกไปยังการเรียกใช้งานฟังก์ชันภายใน:
function test(num) {
function func(localNum) {
console.log(localNum); // แสดงผล 1
}
func(num); //!! ส่งผ่านพารามิเตอร์
}
test(1); // ส่งผ่านพารามิเตอร์เป็นตัวเลข
ผลลัพธ์คือในฟังก์ชันภายในจะสามารถเข้าถึงตัวแปร num ในฐานะตัวแปรภายนอกจากฟังก์ชันแม่ และตัวแปร localNum ซึ่งเป็นตัวแปรท้องถิ่นของฟังก์ชันภายใน
ตัวแปรทั้งสองนี้จะมีค่าเหมือนกัน:
function test(num) {
function func(localNum) {
console.log(num); // แสดงผล 1
console.log(localNum); // แสดงผล 1
}
func(num);
}
test(1);
ความแตกต่างระหว่างพวกมันจะมีดังนี้: หากในฟังก์ชันภายในเปลี่ยนตัวแปร num - มันจะเปลี่ยนในฟังก์ชันภายนอกด้วย:
function test(num) {
function func(localNum) {
num = 2; // เปลี่ยนตัวแปร num
}
func(num); // ส่งผ่านพารามิเตอร์
console.log(num); // แสดงผล 2
}
test(1); // ส่งผ่านพารามิเตอร์เป็นตัวเลข
ส่วนตัวแปร localNum จะเป็นตัวแปรท้องถิ่น การเปลี่ยนแปลงของมันจะไม่นำไปสู่การเปลี่ยนแปลงใดๆ ในฟังก์ชันภายนอก และตัวแปร localNum เองก็จะไม่สามารถมองเห็นจากภายนอกฟังก์ชันภายใน:
function test(num) {
function func(localNum) {
localNum = 2; // เปลี่ยนตัวแปร num
}
func(num); // ส่งผ่านพารามิเตอร์
}
test(1); // ส่งผ่านพารามิเตอร์เป็นตัวเลข
กำหนดโดยไม่ต้องรันโค้ด ว่าจะแสดงผลอะไรในคอนโซล:
function test(num) {
function func(localNum) {
console.log(localNum);
}
func(num);
}
test(1);
กำหนดโดยไม่ต้องรันโค้ด ว่าจะแสดงผลอะไรในคอนโซล:
function test(num) {
function func(localNum) {
console.log(localNum);
}
func(num + 1);
}
test(1);
กำหนดโดยไม่ต้องรันโค้ด ว่าจะแสดงผลอะไรในคอนโซล:
function test(num) {
function func(localNum) {
console.log(num);
}
func(num + 1);
}
test(1);
กำหนดโดยไม่ต้องรันโค้ด ว่าจะแสดงผลอะไรในคอนโซล:
function test(num) {
function func(localNum) {
localNum = 2;
}
func(num);
console.log(num);
}
test(1);
กำหนดโดยไม่ต้องรันโค้ด ว่าจะแสดงผลอะไรในคอนโซล:
function test(num) {
function func(localNum) {
localNum = 2;
}
func(num);
console.log(localNum);
}
test(1);
กำหนดโดยไม่ต้องรันโค้ด ว่าจะแสดงผลอะไรในคอนโซล:
function test(num) {
function func(localNum) {
num = 2;
}
func(num);
console.log(num);
}
test(1);