Passing Variables by Reference in JavaScript
JavaScript lacks the concept of "pass by reference" present in other programming languages. However, it allows passing objects by value, allowing functions to modify their contents.
Passing Objects by Value
To modify an object's contents within a function, pass the object itself as a parameter:
function alterObject(obj) { obj.foo = "goodbye"; } var myObj = { foo: "hello world" }; alterObject(myObj); console.log(myObj.foo); // "goodbye"
Modifying Arrays
To modify an array's elements, iterate over its numeric indices and update each cell individually:
var arr = [1, 2, 3]; for (var i = 0; i < arr.length; i++) arr[i] = arr[i] + 1;
"Pass by Reference" in JavaScript
JavaScript lacks true "pass by reference" functionality. This means it's impossible to modify an original variable's value within a function call, unlike in languages like C .
In the example below, swapping the values of x and y fails because they're passed by value and cannot be modified directly within the function:
function swap(a, b) { var tmp = a; a = b; b = tmp; } var x = 1, y = 2; swap(x, y); console.log("x is " + x + ", y is " + y); // "x is 1, y is 2"
Conclusion
While JavaScript doesn't offer "pass by reference" in the traditional sense, passing objects and manipulating their contents allows for similar functionality. Note that this technique modifies object contents, not the object reference itself.
The above is the detailed content of How Does JavaScript Handle Variable Passing and Object Modification?. For more information, please follow other related articles on the PHP Chinese website!