gpt4 book ai didi

javascript - Node.js V8 通过引用传递

转载 作者:IT老高 更新时间:2023-10-28 23:15:09 25 4
gpt4 key购买 nike

我想知道 V8 中是如何管理内存的。看看这个例子:

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);

reqres 变量在每个函数调用中都会传递,我的问题是:

  1. V8 是通过引用传递它还是在内存中复制?
  2. 是否可以通过引用传递变量,看这个例子。

    var args = { hello: 'world' };

    function myFunction(args){
    args.newHello = 'another world';
    }

    myFunction(args);
    console.log(args);

    最后一行,console.log(args); 将打印:

    "{ hello: 'world', newWorld: 'another world' }"

感谢您的帮助和回答:)

最佳答案

这不是通过引用传递的意思。通过引用传递将意味着:

var args = { hello: 'world' };

function myFunction(args) {
args = 'hello';
}

myFunction(args);

console.log(args); //"hello"

以上是不可能的。

变量只包含对对象的引用,它们不是对象本身。因此,当您传递作为对象引用的变量时,该引用当然会被复制。但是引用的对象没有被复制。


var args = { hello: 'world' };

function myFunction(args){
args.newHello = 'another world';
}

myFunction(args);
console.log(args); // This would print:
// "{ hello: 'world', newHello: 'another world' }"

是的,这是可能的,您只需运行代码即可看到它。

关于javascript - Node.js V8 通过引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11923419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com