Như đã thảo luận ở trên, truyền theo tham chiếu có thể được sử dụng bằng cách truyền tham chiếu của một đối số trong hàm gọi đến tham số của hàm được gọi, sửa đổi giá trị của đối số theo tham chiếu của nó. Để hiểu rõ hơn, chúng tôi sẽ sử dụng cả hai ví dụ về JavaScript vượt qua tham chiếu hoặc giá trị
JavaScript vượt qua các ví dụ tham khảo
- Thí dụ
hàm Passbyvalue[y, z] {let tmp;
tmp = z;
z = y;
y = tmp;
console.log[`Inside Pass by value
hàm -> a = ${y} z = ${z}`];
}
let y = 1;
let z = 2;
console.log[`Before calling Pass by value
Function -> y = ${y} z = ${z}`];
Passbyvalue[y, z] . log[`Sau khi gọi Truyền theo giá trị
console.log[`After calling Pass by value
Hàm -> y =${y} z = ${z}`];
Phân tích
Từ ví dụ trên khi truyền theo giá trị, hàm được gọi trực tiếp và truyền các giá trị của biến dưới dạng đối số. Mọi thay đổi xảy ra trong hàm không phản ánh trên giá trị ban đầu. Xin lưu ý rằng các tham số được truyền dưới dạng đối số sẽ tạo bản sao của riêng chúng và những thay đổi bên trong hàm sẽ ảnh hưởng đến các giá trị được sao chép nhưng không ảnh hưởng đến giá trị ban đầu
Đầu ra cho ví dụ này sẽ như sau
Trước khi hàm truyền giá trị được gọi, chúng ta có y là 1 và z là 2. Trong hàm, chúng ta có y là 2 và z là 1. Sau khi hàm được gọi, một lần nữa chúng ta có y là 1 và z là 2. Bây giờ, hãy xem cách vượt qua tham chiếu khác với JavaScript vượt qua giá trị như thế nào
– JavaScript Pass by Reference Ví dụ
function PassbyReference[obj] {let tmp = obj. y;
obj. y = đối tượng. z;
obj. z = tmp;
bảng điều khiển. log[`Inside Pass By Reference
Function -> y = ${obj. y} z = ${obj. z}`];
}
let obj = {
y. 5,
z. 10
}
bảng điều khiển. log[`Trước khi gọi Pass By Reference
Function -> y = ${obj. y} z = ${obj. z}`];
PassbyReference[obj]
bảng điều khiển. log[`Sau khi gọi Pass By Reference
Function -> y = ${obj. y} z = ${obj. z}`];
Phân tích
Trong ví dụ hiển thị ở trên, tham chiếu hàm JavaScript được gọi trực tiếp và chuyển tham chiếu của biến dưới dạng đối số. Khác với ví dụ truyền theo giá trị, lần này, giá trị bên trong hàm sẽ thay đổi giá trị ban đầu
Đối với các tham số, js truyền theo tham chiếu không tạo bản sao sau khi được truyền dưới dạng đối số nên các thay đổi không ảnh hưởng đến bản sao mà thay vào đó tác động đến giá trị ban đầu. Đầu ra cho ví dụ này sẽ là
Hàm chuyển qua tham chiếu có y là 5 và z là 10 trước khi nó được gọi. Sau khi chuyển theo tham chiếu được chuyển vào bên trong hàm, giá trị được hoán đổi và y trở thành 10 trong khi z trở thành 5. Cuối cùng, tham chiếu hàm JavaScript đã được gọi và các giá trị được khôi phục với y là 5 và z là 10
– Ví dụ cập nhật tham chiếu đối tượng JavaScript
function PassbyReference[obj] {// Ở đây, chúng ta đang thay đổi tham chiếu của đối tượng
obj = {
y: 5,
z. 10,
x. “THISISANEXAMPLE”
}
bảng điều khiển. log[`Inside Pass by
Reference Function -> obj `];
console. log[obj];
}
let obj = {
y. 5,
z. 10
}
bảng điều khiển. log[`Đang cập nhật tham chiếu đối tượng -> `]
console. log[`Trước khi gọi Pass By
Reference Function -> obj`];
console. log[obj];
PassbyReference[obj]
bảng điều khiển. log[`Sau khi gọi Pass By
Reference Function -> obj`];
console. nhật ký[obj];
– Ví dụ 2. Thay đổi đối tượng ban đầu
function PassbyReference[obj] {// Bây giờ hãy xem sự thay đổi của đối tượng ban đầu
obj. x = “THISISANEXAMPLE”;
bảng điều khiển. log[`Inside Pass by
Reference Function -> obj `];
console. log[obj];
}
let obj = {
y. 5,
z. 10
}
bảng điều khiển. log[`Đang thay đổi đối tượng ban đầu -> `]
console. log[`Trước khi gọi Pass By
Reference Function -> obj`];
console. log[obj];
PassbyReference[obj]
bảng điều khiển. log[`Sau khi gọi Pass By
Reference Function -> obj`];
console. nhật ký[obj];
Phân tích
Hãy lưu ý rằng khi sử dụng js truyền theo tham chiếu, chúng ta đang thay đổi giá trị ban đầu khi đối tượng được truyền dưới dạng đối số. Tham chiếu của đối tượng được cập nhật trong hàm, vì vậy nó không ảnh hưởng đến giá trị của đối tượng. Bây giờ, bằng cách thực hiện thay đổi tương tự bên trong, chúng tôi sẽ ảnh hưởng đến đối tượng. Điều này không xảy ra trong JavaScript vượt qua giá trị
Đầu ra cho ví dụ sẽ là
Trước khi hàm truyền tham chiếu được gọi, chúng ta có y là 5 và z là 10. Sau khi chuyển qua tham chiếu được chuyển trong hàm, chúng tôi có y là 5 và z là 10 và chúng tôi đã thêm x làm văn bản THISISANEXAMPLE của mình. Sau khi hàm truyền tham chiếu được gọi, bây giờ chúng ta có y là 5 và z là 10
– JavaScript Pass by Reference Ví dụ
hàm callByReference[varObj] {bảng điều khiển. log[“Inside Call by Reference Method”];
varObj. y = 5;
bảng điều khiển. log[var Obj];
}
let varObj = {
y. 2
};
bảng điều khiển. log[“đây là trước lệnh gọi theo phương thức tham chiếu”];
console. log[varObj];
callByReference[varObj]
bảng điều khiển. log[“đây là sau cuộc gọi theo phương thức tham chiếu”];
console. log[varObj];
}
Phân tích
Cũng giống như các ví dụ trước, ví dụ trên là một cách khác để sử dụng js chuyển qua tham chiếu. Đầu ra sẽ giống với y là 2 trước khi truyền theo phương thức tham chiếu, y sẽ là 5 khi bên trong hàm và cuối cùng, y sẽ là 5 khi truyền theo tham chiếu đã được truyền
câu hỏi thường gặp
Nếu bạn vẫn còn thắc mắc về JavaScript pass by reference, chúng tôi có một số câu trả lời cho bạn trong phần này
1. JavaScript Pass by Reference là gì?
JavaScript vượt qua tham chiếu là các giá trị cơ bản nhất bao gồm không xác định, null, boolean, chuỗi và số. Các giá trị nguyên thủy này được truyền bởi các giá trị trong JavaScript. Trong khi đó, các đối tượng được truyền bằng tham chiếu trong JavaScript và các hàm cũng là một phần của các đối tượng
Bất cứ khi nào chúng ta nói về tham chiếu hàm JavaScript, sẽ có truyền theo tham chiếu hoặc truyền theo hàm giá trị. Biết được sự khác biệt sẽ giúp chúng ta sử dụng js pass by reference một cách hiệu quả
2. Các đối tượng có mối quan hệ gì với các tham chiếu trong JavaScript?
Tất cả các đối tượng trong JavaScript tương tác theo tham chiếu, trỏ đến cùng một vị trí khi chúng được chuyển đến tham chiếu hàm JavaScript
3. Các chuỗi trong JavaScript có được thông qua tham chiếu không?
Có, các chuỗi đã được chuyển qua tham chiếu trong JavaScript. Nội dung của một chuỗi không được sao chép, các chuỗi là bất biến và sau khi được tạo, chúng không thể được sửa đổi trong JavaScript
4. Mảng có đi qua tham chiếu không?
Có, JavaScript bao gồm các đối tượng và mảng chuyển qua tham chiếu. Khi điều này xảy ra, giá trị của các đối tượng có khả năng thay đổi tương ứng
5. JavaScript có hỗ trợ JavaScript vượt qua tham chiếu hoặc giá trị không?
Không giống như JavaScript, Java, Python và các ngôn ngữ khác, chỉ C++ hỗ trợ JavaScript vượt qua tham chiếu hoặc giá trị. Các ngôn ngữ khác bao gồm JavaScript chọn chuyển theo giá trị thay vì chuyển theo tham chiếu
6. Việc sử dụng JS Pass by Reference có tiết kiệm bộ nhớ không?
Có, khi các đối tượng được truyền theo tham chiếu đến các hàm, đối tượng không được sao chép như khi được truyền theo giá trị. Do đó, địa chỉ bộ nhớ của đối tượng chỉ được ghi lại bởi hàm, giúp tiết kiệm bộ nhớ và số chu kỳ bởi CPU do không có thêm bộ tạo bản sao nào có trong quy trình
7. Truyền theo tham chiếu có nhanh hơn truyền theo giá trị không?
Có, truyền theo tham chiếu nhanh hơn truyền theo giá trị khi xem xét kích thước của dữ liệu được truyền vượt quá kích thước của con trỏ
8. Pass by Reference và Call by Reference có giống nhau không?
Có, cả hai thuật ngữ đều ngụ ý cùng một quy trình trong đó tham chiếu đối tượng được chuyển đến một tham số trong lệnh gọi phương thức và nó chuyển một giá trị trỏ đến tham chiếu của đối tượng
9. Các thông số được thông qua như thế nào?
Để truyền tham số bằng cách tham chiếu trong khi thay đổi giá trị, chúng tôi sử dụng từ khóa ref hoặc out. Truyền theo tham chiếu làm cho các thành viên của hàm, phương thức, thuộc tính, bộ chỉ mục, toán tử và hàm tạo thay đổi giá trị tham số
10. JavaScript Truyền theo Giá trị có Cung cấp Kết quả Tương tự như JS Truyền theo Tham chiếu không?
Không, kết quả của JavaScript vượt qua giá trị khác với kết quả của tham chiếu hàm JavaScript. Khi sử dụng kết quả truyền theo giá trị, việc ghi đè các tham số được truyền khi trả về sẽ hạn chế các sửa đổi bị mất khi xem xét trường hợp biến toàn cục. Tóm lại, kết quả là khác nhau
11. Tại sao tham chiếu tốt hơn con trỏ?
Tham chiếu hoạt động với các biến hiện có trong khi con trỏ lưu trữ địa chỉ của biến. Các tham chiếu chia sẻ cùng một địa chỉ bộ nhớ và chiếm ít dung lượng so với các con trỏ có bộ nhớ và kích thước riêng
Sự kết luận
Trong hướng dẫn của chuyên gia ở trên, chúng tôi đã thảo luận về các điểm sau đây liên quan đến JavaScript Pass by Reference
- Chúng tôi đã biết rằng các hàm JavaScript tham chiếu giá trị ban đầu và không tạo bản sao, do đó tiết kiệm bộ nhớ và tăng hiệu quả
- Chúng tôi cũng đã thấy một số ví dụ JavaScript vượt qua tham chiếu hoặc giá trị, cập nhật tham chiếu đối tượng và đột biến của đối tượng
- Cuối cùng, chúng tôi đã xem xét một số câu hỏi liên quan đến JavaScript vượt qua giá trị và js vượt qua tham chiếu
5/5 - [13 phiếu]
- Tác giả
- Bài viết gần đây
Vị trí là tất cả
Vị trí là tất cả. Tài nguyên Go-To của bạn để Tìm hiểu & Xây dựng. CSS, JavaScript, HTML, PHP, C++ và MYSQL