JavaScript chuyển int theo tham chiếu
Nếu bạn đã học một số ngôn ngữ cấp thấp, chẳng hạn như C/C++, như tôi đã học ở trường đại học, bạn có thể đã biết rằng các biến có thể được truyền dưới dạng giá trị hoặc dưới dạng tham chiếu (và tất nhiên, dưới dạng con trỏ, Show
Trong khi trong C++, bạn cần xác định nó một cách rõ ràng, thì trong JavaScript, logic này được tích hợp sẵn. Đó là lý do tại sao không phải tất cả các nhà phát triển bắt đầu làm việc với JavaScript đều biết về sự khác biệt quan trọng này, điều này có thể dẫn đến rất nhiều lỗi không mong muốn. Điều đầu tiên Trước tiên, hãy tìm hiểu ý nghĩa của nó
Trong JavaScript, tất cả các kiểu dữ liệu nguyên thủy (Chuỗi, Số, Boolean) được truyền theo giá trị và các kiểu dữ liệu phức tạp như Mảng và Đối tượng được truyền theo tham chiếu Bây giờ chúng ta sẽ điều tra nó bằng một số ví dụ đơn giản Ở đây chúng tôi khởi tạo biến Nó hoạt động theo cách tương tự khi chuyển các biến vào các đối số của hàm Nhưng khi chúng ta cố gắng chuyển một biến phức tạp (e. g. Object), nó sẽ hoạt động hoàn toàn khác Dưới đây chúng ta có thể thấy rằng khi chúng ta truyền một đối tượng cho một biến hoặc hàm khác, nó được truyền dưới dạng tham chiếu và những thay đổi trong một biến sẽ ảnh hưởng đến tất cả các biến khác tham chiếu đến cùng một địa chỉ bộ nhớ Nhưng làm thế nào chúng ta có thể vượt qua hành vi mặc định? JavaScript không cho phép chọn rõ ràng cách chuyển một biến, vì vậy chúng ta cần thực hiện các giải pháp thay thế để thay đổi hành vi mặc định Truyền các biến nguyên thủy làm tham chiếuTôi không tìm thấy cách nào khác để chuyển các biến nguyên thủy làm tham chiếu ngoại trừ gói chúng vào một đối tượng hoặc một mảng rồi phá hủy nó Nhưng nó không có ý nghĩa gì về mặt hiệu suất vì chúng ta cần tạo và hủy cấu trúc một biến phức tạp Nếu bạn tìm thấy một giải pháp tốt hơn, xin vui lòng chia sẻ nó với chúng tôi Truyền các biến phức tạp dưới dạng giá trịĐể chuyển một biến phức tạp thành một giá trị, chúng ta chỉ cần tạo bản sao của nó. Có nhiều cách để làm điều đó Đối với các đối tượng
Đối với mảng
Tôi phải cảnh báo bạn rằng tất cả các phương thức này đều có một chi tiết quan trọng — chúng chỉ tạo ra một bản sao nông của một biến ban đầu. Điều đó có nghĩa là nếu bên trong mảng hoặc đối tượng của bạn, bạn có các biến phức tạp được lồng vào nhau, chúng sẽ vẫn được sao chép theo tham chiếu Chỉ có một số cách để tạo bản sao sâu
Phần kết luận Và thông báo quan trọng cuối cùng. Hãy cẩn thận khi bạn sử dụng các phương thức tích hợp sẵn hoặc thư viện hoạt động với mảng và đối tượng, luôn kiểm tra xem chúng có thay đổi biến ban đầu hay tạo ra biến mới không E. g. phương thức Các số nguyên có được chuyển theo tham chiếu trong JavaScript không?Các giá trị nguyên thủy như số nguyên, chuỗi và boolean được cung cấp theo giá trị, nhưng các đối tượng và mảng, như đã nêu trước đây, được truyền theo tham chiếu .
Làm cách nào để chuyển giá trị theo tham chiếu trong JavaScript?Chuyển theo tham chiếu. Trong Truyền theo tham chiếu, Hàm được gọi bằng cách truyền trực tiếp tham chiếu/địa chỉ của biến dưới dạng đối số . Vì vậy, thay đổi giá trị bên trong chức năng cũng thay đổi giá trị ban đầu. Trong mảng JavaScript và Đối tượng theo sau chuyển qua thuộc tính tham chiếu.
JavaScript có chuyển theo giá trị hoặc tham chiếu không?JavaScript hoàn toàn truyền theo giá trị. . Biến là con trỏ tới giá trị Việc gán lại một biến chỉ trỏ con trỏ đó vào một giá trị mới Việc gán lại một biến sẽ không bao giờ ảnh hưởng đến các biến khác đang trỏ vào cùng một đối tượng vì mỗi biến có một con trỏ riêng Làm cách nào để chuyển mảng theo tham chiếu trong JavaScript?Mảng và Đối tượng được truyền theo tham chiếu hoặc theo giá trị dựa trên các điều kiện này. . nếu bạn đang đặt giá trị của một đối tượng hoặc mảng thì đó là Truyền theo giá trị. đối tượng1 = { chỗ dựa. "xe ô tô" }; nếu bạn đang thay đổi giá trị thuộc tính của một đối tượng hoặc mảng thì đó là Truyền theo tham chiếu. đối tượng1 |