Vượt qua giá trị. Trong Truyền theo giá trị, hàm được gọi bằng cách truyền trực tiếp giá trị của biến làm đối số. Vì vậy, mọi thay đổi được thực hiện bên trong hàm không ảnh hưởng đến giá trị ban đầu
Trong Truyền theo giá trị, các tham số được truyền dưới dạng đối số tạo bản sao của chính nó. Vì vậy, bất kỳ thay đổi nào được thực hiện bên trong hàm đều được thực hiện đối với giá trị được sao chép chứ không phải giá trị ban đầu
Hãy để chúng tôi lấy một ví dụ để hiểu rõ hơn
Javascript
function Passbyvalue(a, b) {
let tmp;
tmp = b;
Before calling Pass By Reference Function -> a = 10 b = 20 Inside Pass By Reference Function -> a = 20 b = 10 After calling Pass By Reference Function -> a = 20 b = 101
Before calling Pass By Reference Function -> a = 10 b = 20 Inside Pass By Reference Function -> a = 20 b = 10 After calling Pass By Reference Function -> a = 20 b = 103
Before calling Pass By Reference Function -> a = 10 b = 20 Inside Pass By Reference Function -> a = 20 b = 10 After calling Pass By Reference Function -> a = 20 b = 105
Before calling Pass By Reference Function -> a = 10 b = 20 Inside Pass By Reference Function -> a = 20 b = 10 After calling Pass By Reference Function -> a = 20 b = 106_______25_______ Before calling Pass By Reference Function -> a = 10 b = 20 Inside Pass By Reference Function -> a = 20 b = 10 After calling Pass By Reference Function -> a = 20 b = 108
Before calling Pass By Reference Function -> a = 10 b = 20 Inside Pass By Reference Function -> a = 20 b = 10 After calling Pass By Reference Function -> a = 20 b = 109
Updating the object reference -> Before calling PassByReference Function -> obj {a: 10, b: 20} Inside PassbyReference Function -> obj {a: 10, b: 20, c: "GEEKSFORGEEKS"} After calling PassByReference Function -> obj {a: 10, b: 20}0
Updating the object reference -> Before calling PassByReference Function -> obj {a: 10, b: 20} Inside PassbyReference Function -> obj {a: 10, b: 20, c: "GEEKSFORGEEKS"} After calling PassByReference Function -> obj {a: 10, b: 20}1
Updating the object reference -> Before calling PassByReference Function -> obj {a: 10, b: 20} Inside PassbyReference Function -> obj {a: 10, b: 20, c: "GEEKSFORGEEKS"} After calling PassByReference Function -> obj {a: 10, b: 20}2
Before calling Pass By Reference Function -> a = 10 b = 20 Inside Pass By Reference Function -> a = 20 b = 10 After calling Pass By Reference Function -> a = 20 b = 106_______6_______4
Updating the object reference -> Before calling PassByReference Function -> obj {a: 10, b: 20} Inside PassbyReference Function -> obj {a: 10, b: 20, c: "GEEKSFORGEEKS"} After calling PassByReference Function -> obj {a: 10, b: 20}5
Updating the object reference -> Before calling PassByReference Function -> obj {a: 10, b: 20} Inside PassbyReference Function -> obj {a: 10, b: 20, c: "GEEKSFORGEEKS"} After calling PassByReference Function -> obj {a: 10, b: 20}6
Updating the object reference -> Before calling PassByReference Function -> obj {a: 10, b: 20} Inside PassbyReference Function -> obj {a: 10, b: 20, c: "GEEKSFORGEEKS"} After calling PassByReference Function -> obj {a: 10, b: 20}7Updating the object reference -> Before calling PassByReference Function -> obj {a: 10, b: 20} Inside PassbyReference Function -> obj {a: 10, b: 20, c: "GEEKSFORGEEKS"} After calling PassByReference Function -> obj {a: 10, b: 20}8
đầu ra
Before calling Pass by value Function -> a = 1 b = 2 Inside Pass by value function -> a = 2 b = 1 After calling Pass by value Function -> a =1 b = 2Vượt qua tham khảo. Trong Pass by Reference, Hàm được gọi bằng cách chuyển trực tiếp tham chiếu/địa chỉ của biến làm đố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
Trong Truyền theo tham chiếu, các tham số được truyền dưới dạng đối số không tạo bản sao của chính nó, nó đề cập đến giá trị ban đầu nên những thay đổi được thực hiện bên trong hàm sẽ ảnh hưởng đến giá trị ban đầu.
chúng ta hãy lấy một ví dụ để hiểu rõ hơn
Javascript
function Mutating the original object -> Before calling PassByReference Function -> obj {a: 10, b: 20} Inside PassbyReference Function -> obj {a: 10, b: 20, c: "GEEKSFORGEEKS"} After calling PassByReference Function -> obj {a: 10, b: 20, c: "GEEKSFORGEEKS"}0
Mutating the original object -> Before calling PassByReference Function -> obj {a: 10, b: 20} Inside PassbyReference Function -> obj {a: 10, b: 20, c: "GEEKSFORGEEKS"} After calling PassByReference Function -> obj {a: 10, b: 20, c: "GEEKSFORGEEKS"}2
Mutating the original object -> Before calling PassByReference Function -> obj {a: 10, b: 20} Inside PassbyReference Function -> obj {a: 10, b: 20, c: "GEEKSFORGEEKS"} After calling PassByReference Function -> obj {a: 10, b: 20, c: "GEEKSFORGEEKS"}4
Mutating the original object -> Before calling PassByReference Function -> obj {a: 10, b: 20} Inside PassbyReference Function -> obj {a: 10, b: 20, c: "GEEKSFORGEEKS"} After calling PassByReference Function -> obj {a: 10, b: 20, c: "GEEKSFORGEEKS"}6
Mutating the original object -> Before calling PassByReference Function -> obj {a: 10, b: 20} Inside PassbyReference Function -> obj {a: 10, b: 20, c: "GEEKSFORGEEKS"} After calling PassByReference Function -> obj {a: 10, b: 20, c: "GEEKSFORGEEKS"}8
Before calling Pass By Reference Function -> a = 10 b = 20 Inside Pass By Reference Function -> a = 20 b = 10 After calling Pass By Reference Function -> a = 20 b = 106function0
Before calling Pass By Reference Function -> a = 10 b = 20 Inside Pass By Reference Function -> a = 20 b = 10 After calling Pass By Reference Function -> a = 20 b = 109
function2
function4
function6
Before calling Pass By Reference Function -> a = 10 b = 20 Inside Pass By Reference Function -> a = 20 b = 10 After calling Pass By Reference Function -> a = 20 b = 109
function8
function0
Passbyvalue(a, b) {1
Passbyvalue(a, b) {2
function0
đầu ra
Before calling Pass By Reference Function -> a = 10 b = 20 Inside Pass By Reference Function -> a = 20 b = 10 After calling Pass By Reference Function -> a = 20 b = 10Ghi chú. Trong Pass by Reference, chúng tôi đang thay đổi giá trị ban đầu. khi chúng ta chuyển một đối tượng làm đối số và cập nhật tham chiếu của đối tượng đó trong ngữ cảnh của hàm, điều đó sẽ không ảnh hưởng đến giá trị đối tượng. Nhưng nếu chúng ta thay đổi đối tượng bên trong, nó sẽ ảnh hưởng đến đối tượng