Cách Truyền Biến Tham Chiếu Trong Javascript?
Có thể bạn quan tâm
Truyền biến tham chiếu hầu như ngôn ngữ nào cũng có, vậy trong Javascript có tồn tại hay không? Nếu có thì cách sử dụng nó như thế nào? Hãy trình bày cách sử dụng tham chiếu trong Javascript.
Bài giải
-------------------- ######## --------------------
Trong Javascript cho phép bạn truyền bao nhiêu tham số vào hàm đều được miễn là hàm đó có khai báo tham số, các tham số này được xử lý trong hàm và mang tính cục bộ, nghĩa là các thao tác bên trong hàm không làm ảnh hưởng đến giá trị các tham số đó.
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.1. Một số cách truyền tham số trong hàm
Tham số có thể hiểu là một nặc danh đại diện cho giá trị truyền vào hàm, vì vậy ta có thể truyền bất kì một kiểu dữ liệu nào cho tham số như kiểu number, string, object, hay thậm chí là một callback function. Ok vậy thì trong phần này mình sẽ lấy một số ví dụ cho từng kiểu dữ liệu nhé.
Khi tham số là kiểu dữ liệu thông thường
Kiểu dữ liệu thông thường là kiểu dữ liệu number, string, ... Mình sẽ làm một ví dụ đơn giản như sau: tạo một hàm với nội dung thay đổi giá trị của tham số, sau đó sử dụng để kiểm tra xem giá trị của tham số đó ở bên ngoài hàm có bị ảnh hưởng theo không.
function changeValue(x) { // đổi giá trị của x x = 5; } var x = 4; alert(x); // kết quả là 4 myfunction(x); // chạy hàm này xem x có bị thay đổi không alert(x); // kết quả x vẫn không thay đổi (vẫn bằng 4)
Rõ ràng giá trị của x ở bên ngoài hàm vẫn không thay đổi, đây chính là đặc điểm của tham số truyền vào hàm.
Bài viết này được đăng tại [free tuts .net]
Khi tham số là một Object
Trong ví dụ trên tham số truyền vào có kiểu dữ liệu number nên rất đơn giản, bây giờ ta thử truyền tham số là một object xem kết quả thế nào nhé. Xét ví dụ dưới đây:
function changeValue(obj) { obj.value = 20; } var obj = {}; console.log(obj); // obj có giá trị rỗng {} changeValue(obj); console.log(obj); // obj có giá trji là {value:20}
Trong ví dụ này sau khi thực hiện gọi hàm changeValue thì đối tượng obj đã được bổ sung một key value, tức là nó đã thay đổi giá trị. Vậy ta có kết luận là nếu tham số truyền vào là một object thì các thao tác thay đổi giá trị của object bên trong hàm sẽ được lưu lại.
Khi tham số là function
Nếu bạn truyền vào là một function thì sau khi thực hiện function đó vẫn không thay đổi.
Xét ví dụ sau: XEM DEMO
// Hàm chính function freetutsDotNet() { this.age = 3; this.add = function(){ this.age++; }; } // Tạo mới đối tượng domain var domain = new freetutsDotNet(); // Hàm thực hiện callback function function domainChanger(fnc){ fnc(); } //// SỬ DỤNG //// alert(domain.age); // kết quả là 3 domainChanger(domain.add); // gọi hàm domain.add với mục đích tăng age lên 4 alert(domain.age); // nhưng kết quả vẫn là số 3
Trong ví dụ này mình đã truyền tham số là một callback function và callback function đó có tác dụng tăng age lên 1, tuy nhiên sau khi thực hiện xong thì age vẫn giữ nguyên giá trị là 3.
2. Kết luận
Như vậy trong Javascript không tồn tại khái niệm truyền tham chiếu, vì vậy bạn chỉ có thể sử dụng biến cục bộ hoặc là object thì các hành động bên trong hàm mới làm thay đổi giá trị của biến.
Câu hỏi thường gặp liên quan:
- Cách truyền biến tham chiếu trong Javascript?
- Cho ví dụ về hàm có return và không có return trong Javascript
Cùng chuyên mục:
Functional Programming là gì? Tại sao và khi nào bạn nên sử dụng trong JavaScript
Những tính năng mới trong ES6+ trong JavaScript
4 cách tránh memory leaks trong JavaScript
Capturing và bubbling Event trong Javascript
Phân biệt prototype và __proto__ trong JavaScript
Cách hoạt động của Event Loop trong JavaScript
Phương thức bind(), call(), và apply() trong JavaScript
Cách khắc phục lỗi "hoisting" trong JavaScript
Sử dụng Promise.all và Promise.race để quản lý các Promise trong JavaScript
Xử lý bất đồng bộ bằng vòng lặp for-await trong JavaScript
Sự khác biệt giữa Promise, Callback và Async/Await trong JavaScript
Cách sử dụng Async functions trong JavaScript
Hàm String isspace() trong Python
Cách tạo số ngẫu nhiên trong Javascript
Hướng dẫn cách tạo một số ngẫu nhiên ...
Cách gộp hai object javascript lại với nhau
Cách lấy chiều dài của object trong Javascript
Hướng dẫn giải phương trình bậc 1 bằng Javascript
Cách dùng nextSibling trong javascript
Cách dùng insertAdjacentHTML trong javascript
Cách dùng innerHTML trong Javascript
Từ khóa » Truyền Tham Số Vào Hàm Trong Javascript
-
Truyền Tham Số Vào Hàm Trong JavaScript
-
Truyền Tham Số Vào Hàm Trong Javascript - Viblo
-
[Javascript] Truyền Tham Trị Và Truyền Tham Chiếu - Viblo
-
Tham Số Và đối Số Của Hàm Trong JavaScript | Lập Trình Từ Đầu
-
Những Cách Truyền Mảng Vào Hàm Trong Javascript
-
Làm Sao để Bắt Buộc Truyền Tham Số Vào Hàm? - Complete JavaScript
-
Mọi Thứ Bạn Cần Biết Về Function - Javascript - CodeLearn
-
Tham Số Và đối Số Của Hàm JavaScript - Minh Hoàng Blog
-
Truyền Tham Chiếu Và Tham Trị Trong JavaScript | Học JavaScript
-
Tham Số Hàm JavaScript - Tech Wiki
-
Cách Chấp Nhận Các Tham Số Không Giới Hạn Trong Một Hàm ...
-
Xây Dựng Hàm Trong JavaScript Hàm ẩn Danh Và Biểu Thức Hàm
-
Tất Tần Tật Về Hàm Trong Javascript - KungFu Tech
-
Cách Sử Dụng Hàm (Function) Trong JavaScript - Web Cơ Bản