Các biến được truyền trong javascript như thế nào?

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 = 10
1

    

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 = 10
3

    

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 = 10
5

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 = 10
6_______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 = 10
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 = 10
9

 

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 = 10
6_______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}
7
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}
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 = 2

Vượ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 = 10
6function0

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 = 10
9

 

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 = 10
9

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 = 10

Ghi 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

Các biến JavaScript có được truyền theo tham chiếu hoặc giá trị không?

JavaScript luôn chuyển từng giá trị . Điều này có nghĩa là mọi thứ trong JavaScript là một loại giá trị và các đối số của hàm luôn được truyền theo giá trị.

Làm cách nào để chuyển biến thành mảng trong JavaScript?

Phương pháp 1. Sử dụng phương thức apply() . Phương thức apply() được sử dụng để gọi một hàm với các đối số đã cho là một mảng hoặc đối tượng giống như mảng. Nó chứa hai tham số. Giá trị này cung cấp lời gọi hàm và mảng đối số chứa mảng đối số được truyền.

Làm thế nào các đối tượng được thông qua trong JavaScript?

Nó luôn truyền theo giá trị, nhưng đối với các đối tượng, giá trị của biến là một tham chiếu. Do đó, khi bạn truyền một đối tượng và thay đổi các thành viên của nó, những thay đổi đó vẫn tồn tại bên ngoài hàm. Điều này làm cho nó trông giống như vượt qua tham chiếu

Các biến được gõ trong JavaScript như thế nào?

JavaScript là ngôn ngữ được nhập động . Điều này có nghĩa là bạn không phải chỉ định kiểu dữ liệu của một biến khi bạn khai báo nó. Điều đó cũng có nghĩa là các loại dữ liệu được tự động chuyển đổi khi cần trong quá trình thực thi tập lệnh. Vì JavaScript được gõ động nên phép gán này không gây ra thông báo lỗi.