Node.js V8 pass by reference
That's not what pass by reference means. Pass by reference would mean this:
var args = { hello: 'world' };
function myFunction(args) {
args = 'hello';
}
myFunction(args);
console.log(args); //"hello"
And the above is not possible.
Variables only contain references to objects, they are not the object themselves. So when you pass a variable that is a reference to an object, that reference will be of course copied. But the object referenced is not copied.
var args = { hello: 'world' };
function myFunction(args){
args.newHello = 'another world';
}
myFunction(args);
console.log(args); // This would print:
// "{ hello: 'world', newHello: 'another world' }"
Yes that's possible and you can see it by simple running the code.
onlineracoon
Dutch developer, interested in Javascript, Node.js, Backend and Frontend development of webapps and mobile apps.
Updated on March 21, 2020Comments
-
onlineracoon over 4 years
I wonder how memory is managed in V8. Take a look at this example:
function requestHandler(req, res){ functionCall(req, res); secondFunctionCall(req, res); thirdFunctionCall(req, res); fourthFunctionCall(req, res); }; var http = require('http'); var server = http.createServer(requestHandler).listen(3000);
The
req
andres
variables are passed in every function call, my question is:- Does V8 pass this by reference or does it make a copy in memory?
Is it possible to pass variables by reference, look at this example.
var args = { hello: 'world' }; function myFunction(args){ args.newHello = 'another world'; } myFunction(args); console.log(args);
The last line,
console.log(args);
would print:"{ hello: 'world', newWorld: 'another world' }"
Thanks for help and answers :)