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
and res
variables are passed in every function call, my question is:
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 :)
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.