Làm thế nào để bạn xác định một tài liệu tham khảo trong javascript?

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ượng

JavaScript 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;

};

5

javascript

// 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

Làm thế nào để bạn xác định một tài liệu tham khảo trong javascript?

Để 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;

};

7

javascript

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;

};

2

Câ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;

};

7

Sau đó,

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;

};

6

3. Người giới thiệu

Tuy 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

Làm thế nào để bạn xác định một tài liệu tham khảo trong javascript?

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;

};

0

Câ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ạo

Sau đó,

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ảo

javascript

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ến

Ghi 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ếu

Hiể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 đẳng

javascript

let a = 1;

let b = a;

b = b + 2;

console.log(a); // 1

console.log(b); // 3

2

javascript

// 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

21

Như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ượng

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 giữ các tham chiếu đến thể hiện mảng khác nhau

javascript

// Objects

const plainObject = {

prop: 'Value'

};

const array = [1, 5, 6];

const functionObject = (n1, n2) => {

return n1 + n2;

};

4

Mả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 nhau

Toá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;

};

43

5. Tóm lược

Trong 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?

Làm thế nào để bạn xác định một tài liệu tham khảo trong javascript?
đề xuất cải tiến

Bài đăng chất lượng vào hộp thư đến của bạn

Tô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 mua

Tham gia cùng 6845 người đăng ký khác

Làm thế nào để bạn xác định một tài liệu tham khảo trong javascript?

Làm thế nào để bạn xác định một tài liệu tham khảo trong javascript?

Giới thiệu về Dmitri Pavlutin

Nhà 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