JavaScript có chuyển chuỗi theo tham chiếu không?

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

JavaScript có chuyển chuỗi theo tham chiếu không?
Để biết thêm các chủ đề về JavaScript hoặc các ngôn ngữ lập trình khác, hãy truy cập blog của chúng tôi. Cảm ơn bạn đã đọc

5/5 - (13 phiếu)

  • Tác giả
  • Bài viết gần đây

JavaScript có chuyển chuỗi theo tham chiếu không?

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

Chuỗi có thể được chuyển qua tham chiếu không?

chuỗi được truyền theo tham chiếu . Loại chuỗi tích hợp là một loại giá trị. Các biến (cũng là đối số hàm/phương thức kể từ bây giờ) và các trường cấu trúc của kiểu chuỗi được truyền/sao chép theo giá trị.

Có phải JavaScript luôn chuyển qua tham chiếu không?

Nó luôn truyền theo giá trị, nhưng đối với các đối tượng, giá trị của biến là một tham chiếu . Do đó, khi bạn truyền một đối tượng và thay đổi các thành viên của nó, những thay đổi đó vẫn tồn tại bên ngoài hàm. Điều này làm cho nó trông giống như vượt qua tham chiếu.

JavaScript có chỉ định theo tham chiếu không?

Đối tượng và Mảng . Khi có nhiều hơn một biến được đặt để lưu trữ một đối tượng, mảng hoặc hàm, các biến đó sẽ trỏ đến cùng một không gian được phân bổ trong bộ nhớ. Thông qua tham chiếu. Objects in JavaScript are passed by reference. When more than one variable is set to store either an object , array or function , those variables will point to the same allocated space in the memory. Passed by reference.

Các loại tham chiếu chuỗi có phải là JavaScript không?

chuỗi là một loại tham chiếu đặc biệt hoạt động như một loại giá trị trong toán tử đẳng thức. Khi một chuỗi được chuyển đến một hàm, tham chiếu của nó được chuyển đến hàm chứ không phải là bản sao giá trị của nó.