PHẦN CƠ BẢN
VÒNG LẶP
DATA TYPES
EVENTS
DOM
BOM
OBJECT
BỔ SUNG
THỰC HÀNH
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Cách truyền biến tham chiếu trong Javascript?

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ố đó.

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é.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

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.

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ùng chuyên mục:

Cách gộp hai object javascript lại với nhau

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

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

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 nextSibling trong javascript

Cách dùng insertAdjacentHTML trong javascript

Cách dùng insertAdjacentHTML trong javascript

Cách dùng innerHTML trong Javascript

Cách dùng innerHTML trong Javascript

Cách dùng insertBefore trong javascript

Cách dùng insertBefore trong javascript

Cách dùng insertAfter trong Javascript

Cách dùng insertAfter trong Javascript

Cách dùng parentNode trong Javascript

Cách dùng parentNode trong Javascript

Cách dùng parentElement trong Javascript

Cách dùng parentElement trong Javascript

Tính tổng các phần tử trong mảng javascript

Tính tổng các phần tử trong mảng javascript

Tính tổng hai số bằng Javascript (cộng hai số)

Tính tổng hai số bằng Javascript (cộng hai số)

Cách gán giá trị cho thẻ input trong javascript

Cách gán giá trị cho thẻ input trong javascript

Để gán giá trị cho thẻ input thì ta có hai cách, thứ nhất là…

Cách kiểm tra số nguyên âm trong javascript

Cách kiểm tra số nguyên âm trong javascript

Cách kiểm tra số nguyên dương trong javascript

Cách kiểm tra số nguyên dương trong javascript

Hàm closure trong javascript

Hàm closure trong javascript

Closure là một khái niệm không phải ai cũng ..

Biểu thức chính quy RegEx trong Javascript

Biểu thức chính quy RegEx trong Javascript

Bài này chúng ta sẽ tìm hiểu đến chuỗi và cách sử dụng biểu thức…

Cách dùng Import / Export Module trong javascript

Cách dùng Import / Export Module trong javascript

Khi bạn xây dựng một ứng dụng nhỏ thì việc đặt

Cơ chế hoạt động của hoisting trong Javascript

Cơ chế hoạt động của hoisting trong Javascript

Hoisting là vấn đề liên quan đến cách khai báo biến trong Javascript. Nó liên…

Cấp độ private / protected của class trong Javascript

Cấp độ private / protected của class trong Javascript

Top