Sự khác biệt chính giữa hai loại này là việc truyền theo giá trị xảy ra khi gán nguyên hàm trong khi truyền theo tham chiếu khi gán đố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 đăng này 1. Hiểu nguyên thủy và các đối tượngJavaScript cung cấp 2 loại kiểu dữ liệu. nguyên thủy và đối tượng Các số nguyên thủy là số, boolean, chuỗi, ký hiệu và giá trị đặc biệt javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
4 và javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
5javascript // Primitives const number = 10; const bool = false; const str = 'Hello!'; const missingObject = null; const nothing = undefined;
Loại thứ hai là đồ vật. Riêng đối tượng đơn giản, mảng, hàm, v.v. — đều là đối tượng javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
Nói cách khác, bất cứ thứ gì không phải là giá trị nguyên thủy đều là một đối tượng 2. giá trịQuy tắc truyền theo giá trị đơn giản là tất cả các giá trị nguyên thủy trong JavaScript đều được truyền theo giá trị. Đơn giản như thế Truyền theo 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ị đó sẽ được tạo. Mỗi lần
Để 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 javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
6 và javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
7javascript let a = 1; let b = a; b = b + 2; console.log(a); // 1 console.log(b); // 3
Câu lệnh đầu tiên javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
0 định nghĩa một biến javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
6 được khởi tạo với số javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
2Câu lệnh thứ hai javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
3 định nghĩa một biến khác javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
7 và khởi tạo nó với giá trị của biến javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
6 — được truyền theo giá trị. Đơn giản hơn, một bản sao của số javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
2 được gán cho javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
7Sau đó, javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
8 tăng thêm javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
9 và trở thành javascript let a = 1; let b = a; b = b + 2; console.log(a); // 1 console.log(b); // 3
0. Biến javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
7 thay đổi và thay đổi này không ảnh hưởng đến giá trị của javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
63. Người giới thiệuTuy nhiên, việc vượt qua tham chiếu thể hiện theo cách khác 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 ở cả 2 biến
Hãy kiểm tra mẫu mã sau javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
0Câu lệnh đầu tiên javascript let a = 1; let b = a; b = b + 2; console.log(a); // 1 console.log(b); // 3
3 tạo một mảng, định nghĩa một biến javascript let a = 1; let b = a; b = b + 2; console.log(a); // 1 console.log(b); // 3
4 và khởi tạo biến với một tham chiếu đến mảng đã tạoSau đó, javascript let a = 1; let b = a; b = b + 2; console.log(a); // 1 console.log(b); // 3
5 định nghĩa một biến javascript let a = 1; let b = a; b = b + 2; console.log(a); // 1 console.log(b); // 3
6 và khởi tạo javascript let a = 1; let b = a; b = b + 2; console.log(a); // 1 console.log(b); // 3
6 với tham chiếu được lưu trữ trong biến javascript let a = 1; let b = a; b = b + 2; console.log(a); // 1 console.log(b); // 3
4. Đây là một vượt qua bằng cách tham khảojavascript let a = 1; let b = a; b = b + 2; console.log(a); // 1 console.log(b); // 3
9 thay đổi mảng bằng cách đẩy một mục javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
9. Vì các biến javascript let a = 1; let b = a; b = b + 2; console.log(a); // 1 console.log(b); // 3
4 và javascript let a = 1; let b = a; b = b + 2; console.log(a); // 1 console.log(b); // 3
6 tham chiếu cùng một mảng nên thay đổi này được phản ánh trong cả hai biếnGhi chú. để đơ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 ra các biến trong JavaScript giữ các giá trị tham chiếu đến các đối tượng 4. So sánh các giá trị và so sánh các tham chiếuHiểu sự khác biệt giữa giá trị và tham chiếu là điều 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 chặt chẽ javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
03, 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 đều bình đẳngjavascript let a = 1; let b = a; b = b + 2; console.log(a); // 1 console.log(b); // 3
2javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
04 và javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
05 có cùng giá trị javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
2. Toán tử javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
03 đánh giá thành javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
08 miễn là cả hai toán hạng đều là javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
2, bất kể giá trị được lấy từ đâu. một chữ javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
2, giá trị của biến, biểu thức javascript let a = 1; let b = a; b = b + 2; console.log(a); // 1 console.log(b); // 3
21Nhưng toán tử so sánh javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
03 hoạt động khác khi so sánh các tham chiếu. 2 tham chiếu chỉ bằng nhau nếu chúng tham chiếu chính xác cùng một đối tượngjavascript let a = 1; let b = a; b = b + 2; console.log(a); // 1 console.log(b); // 3
23 và javascript let a = 1; let b = a; b = b + 2; console.log(a); // 1 console.log(b); // 3
24 giữ các tham chiếu đến thể hiện mảng khác nhaujavascript // Objects
const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; }; 4Mảng tham chiếu javascript let a = 1; let b = a; b = b + 2; console.log(a); // 1 console.log(b); // 3
23 và javascript let a = 1; let b = a; b = b + 2; console.log(a); // 1 console.log(b); // 3
24 có cùng cấu trúc, tuy nhiên, javascript let a = 1; let b = a; b = b + 2; console.log(a); // 1 console.log(b); // 3
27 đánh giá bằng javascript let a = 1; let b = a; b = b + 2; console.log(a); // 1 console.log(b); // 3
28 vì javascript let a = 1; let b = a; b = b + 2; console.log(a); // 1 console.log(b); // 3
23 và javascript let a = 1; let b = a; b = b + 2; console.log(a); // 1 console.log(b); // 3
24 tham chiếu các đối tượng mảng khác nhauToán tử so sánh chỉ trả về javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
08 khi so sánh các tham chiếu trỏ đến cùng một đối tượng. javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
42 hoặc javascript // Objects const plainObject = { prop: 'Value' }; const array = [1, 5, 6]; const functionObject = (n1, n2) => { return n1 + n2; };
435. Tóm lượcTrong các kiểu nguyên thủy của JavaScript được truyền xung quanh dưới dạng giá trị. nghĩa là mỗi khi một giá trị được gán, một bản sao của giá trị đó sẽ đượ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, hàm, thể hiện lớp) là các tham chiếu. Nếu bạn sửa đổi đối tượng, thì tất cả các biến tham chiếu đến đối tượng đó sẽ thấy sự thay đổi Toán tử so sánh phân biệt các giá trị so sánh và tham chiếu. 2 biến giữ 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ỉ có 2 giá trị giống nhau bất kể giá trị bắt nguồn từ đâu. từ một biến, theo 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 theo cấu trúc của chúng hơn là theo tham chiếu. Kiểm tra bài viết Cách so sánh các đối tượng trong JavaScript Thích bài viết? đề xuất cải tiếnBài đăng chất lượng vào hộp thư đến của bạnTôi thường xuyên xuất bản bài viết có chứa - Các khái niệm JavaScript quan trọng được giải thích bằng các từ đơn giản
- Tổng quan về các tính năng JavaScript mới
- Cách sử dụng TypeScript và cách gõ
- Thiết kế phần mềm và thực hành mã hóa tốt
Đăng ký nhận bản tin của tôi để nhận chúng ngay trong hộp thư đến của bạn Đặt muaTham gia cùng 6845 người đăng ký khác Giới thiệu về Dmitri PavlutinNhà văn và huấn luyện viên công nghệ. Thói quen hàng ngày của tôi bao gồm (nhưng không giới hạn) uống cà phê, viết mã, viết, huấn luyện, vượt qua sự nhàm chán 😉
Tham chiếu trong JavaScript có nghĩa là gì?
Tham khảo JavaScript đóng vai trò như kho lưu trữ dữ kiện về ngôn ngữ JavaScript . Toàn bộ ngôn ngữ được mô tả chi tiết ở đây. Khi bạn viết mã JavaScript, bạn sẽ thường xuyên tham khảo các trang này (do đó, tiêu đề là "Tham khảo JavaScript").
JavaScript có sử dụng tham chiếu không?
Các đối tượng trong JavaScript được truyền theo tham chiếu . 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.
Làm cách nào để kiểm tra tham chiếu của biến trong JavaScript?
Đối với loại tham chiếu như đối tượng, toán tử == hoặc === chỉ kiểm tra tham chiếu của nó. ở đây a==b sẽ sai vì tham chiếu của cả hai biến là khác nhau mặc dù nội dung của chúng giống nhau. và nếu bây giờ tôi kiểm tra a==b thì nó sẽ đúng, vì tham chiếu của cả hai biến bây giờ đều giống nhau |