Hướng dẫn is javascript is reference based or value based? - javascript là dựa trên tham chiếu hay dựa trên giá trị?
Trong JavaScript, bạn có thể chuyển qua giá trị và bằng cách tham khảo. Show Sự khác biệt chính giữa hai là chuyển qua giá trị xảy ra khi gán nguyên thủy trong khi truyền bằng cách tham chiếu khi gán các đối tượng. Hãy thảo luận về các giá trị và tài liệu tham khảo chi tiết hơn trong bài viết này. 1. Hiểu nguyên thủy và đối tượngJavaScript cung cấp 2 loại loại dữ liệu: nguyên thủy và đối tượng. Các nguyên thủy là số, booleans, chuỗi, biểu tượng và giá trị đặc biệt
Danh mục thứ hai là các đối tượng. Đặc biệt là đối tượng, mảng, chức năng, và nhiều hơn nữa - là tất cả các đối tượng.
Nói điều đó khác nhau, bất cứ điều gì không phải là một giá trị nguyên thủy là một đối tượng. 2. Giá trịQuy tắc đơn giản của việc truyền theo giá trị là tất cả các giá trị nguyên thủy trong JavaScript được truyền theo giá trị. Đơn giản như thế. Chuyển bằng giá trị có nghĩa là mỗi khi bạn gán một giá trị cho một biến, một bản sao của giá trị đó được tạo. Mỗi lần.
Hãy để tôi chỉ cho bạn cách vượt qua giá trị thể hiện chính nó. Giả sử bạn có 2 biến
Câu lệnh đầu tiên 0 xác định một biến a được khởi tạo với số 2. Câu lệnh thứ hai 3 xác định một biến khác b và khởi tạo nó với giá trị của biến a - được truyền theo giá trị. Đơn giản hơn, một bản sao của số 2 được gán cho b .Sau đó, 8 tăng thêm 9 và trở thành 0. b Thay đổi biến và thay đổi này không ảnh hưởng đến giá trị của a .3. Tài liệu tham khảoTuy nhiên, việc vượt qua tham chiếu, biểu hiện khác nhau. Khi tạo một đối tượng bạn được cung cấp một tham chiếu đến đối tượng đó. Nếu 2 biến giữ cùng một tham chiếu, thì việc thay đổi đối tượng phản ánh trong cả hai biến.
Hãy kiểm tra mẫu mã sau:
Câu lệnh đầu tiên 3 tạo ra một mảng, xác định một biến 4 và khởi tạo biến có tham chiếu đến mảng được tạo. Sau đó 5 xác định một biến 6 và khởi tạo 6 với tham chiếu được lưu trữ trong biến 4. Đây là một đường chuyền bằng tài liệu tham khảo. 9 làm biến đổi mảng bằng cách đẩy một mục 9. Vì các biến 4 và 6 tham chiếu cùng một mảng, thay đổi này được phản ánh trong cả hai biến. Lưu ý: Để đơn giản, tôi nói rằng các biến chứa các tham chiếu đến các đối tượng. Nhưng nói đúng các biến trong các giá trị giữ JavaScript là các tham chiếu đến các đối tượng. 4. So sánh các giá trị và so sánh các tài liệu tham khảoHiểu được sự khác biệt giữa các giá trị và tài liệu tham khảo là rất quan trọng khi bạn muốn so sánh các đối tượng. Khi sử dụng toán tử so sánh nghiêm ngặt 3, 2 biến có giá trị bằng nhau nếu chúng có cùng giá trị. Tất cả các so sánh dưới đây là bằng nhau:
4 và 5 có cùng giá trị 2. Nhà điều hành 3 đánh giá là 8 dài như cả hai toán hạng là 2, bất kể giá trị được lấy từ đâu: một nghĩa đen 2, giá trị của biến, biểu thức 1. Nhưng toán tử so sánh 3 hoạt động khác nhau khi so sánh các tài liệu tham khảo. 2 Tài liệu tham khảo chỉ bằng nhau nếu chúng tham chiếu chính xác cùng một đối tượng. 3 và 4 Giữ các tài liệu tham khảo cho phiên bản mảng khác nhau:
3 và 4 Các mảng tham chiếu của cùng một cấu trúc, tuy nhiên 7 đánh giá thành 8 vì 3 và 4 tham chiếu các đối tượng mảng khác nhau. Toán tử so sánh chỉ trả về 8 khi so sánh các tham chiếu chỉ vào cùng một đối tượng: 2 hoặc 3. 5. Tóm tắtTrong các loại nguyên thủy JavaScript được truyền xung quanh làm giá trị: có nghĩa là mỗi lần một giá trị được gán, một bản sao của giá trị đó được tạo. Mặt khác các đối tượng (bao gồm các đối tượng đơn giản, mảng, chức năng, phiên bản lớp) là các tài liệu tham khảo. Nếu bạn sửa đổi đối tượng, thì tất cả các biến tham chiếu đối tượng đó sẽ thấy sự thay đổi. Toán tử so sánh phân biệt so sánh các giá trị và tài liệu tham khảo. 2 Biến giữ các tham chiếu chỉ bằng nhau nếu chúng tham chiếu chính xác cùng một đối tượng, nhưng 2 biến giữ giá trị bằng nhau nếu chúng chỉ đơn giản là có 2 giá trị giống nhau cho dù giá trị bắt nguồn từ đâu: từ một biến, nghĩa đen, v.v. Tuy nhiên, thông thường, bạn có thể muốn so sánh các đối tượng bằng cấu trúc của chúng thay vì tham chiếu. Kiểm tra bài viết Cách so sánh các đối tượng trong JavaScript. JavaScript là tham chiếu hay giá trị?Do đó, ngay cả việc thay đổi đối số bên trong hàm cũng không ảnh hưởng đến biến được truyền từ bên ngoài hàm. Điều quan trọng cần lưu ý là trong JavaScript, tất cả các đối số hàm luôn được truyền theo giá trị. Đó là, JavaScript sao chép các giá trị của các biến số chuyển thành các đối số bên trong hàm.all function arguments are always passed by value. That is, JavaScript copies the values of the passing variables into arguments inside of the function.
JavaScript có đi qua tham chiếu hay sao chép không?Trong mảng JavaScript và đối tượng theo sau bởi thuộc tính tham chiếu.Trong tham chiếu vượt qua, các tham số được truyền dưới dạng một đối số không tạo ra bản sao của riêng mình, nó đề cập đến giá trị ban đầu để các thay đổi được thực hiện bên trong ảnh hưởng đến giá trị ban đầu.Hãy để chúng tôi lấy một ví dụ để hiểu rõ hơn.pass by reference property. In Pass by reference, parameters passed as an arguments does not create its own copy, it refers to the original value so changes made inside function affect the original value. let us take an example to understand better.
Có phải là các biến JS tham chiếu?Trong JavaScript, không thể có một tham chiếu từ biến này sang biến khác.Và, chỉ các giá trị hợp chất (đối tượng, mảng) có thể được gán bằng tham chiếu.Điểm mấu chốt: Giá trị loại được gán cho một biến quyết định xem giá trị được lưu trữ với gán từng giá trị hoặc tham chiếu.it's just NOT possible to have a reference from one variable to another variable. And, only compound values (Object, Array) can be assigned by reference. Bottom line: The typeof value assigned to a variable decides whether the value is stored with assign-by-value or assign-by-reference. |