当一个变量被传递给一个函数时,JavaScript 堆栈会发生什么?

What happens to the JavaScript stack when a variable is passed to a function?

我正在使用 JavaScript (Express) 编写服务器端应用程序。所以我必须验证一大串字符(base 64 字符串)。我有点知道我想做什么以及如何做,但我有与性能相关的问题。

请考虑上传的字符串确实很大(最多 5 MB)。我已经编写了几个应该进行验证的函数,但我不知道幕后发生了什么。

function validate(str) {
    ....
    return bool;
}
var b64_string = '......';  // <- string can be 5 megabytes 
if(validate(b64_string) {
    doSomething(b64_string);
}

如果这是 C,将为 validate(str) 函数分配一个堆栈,并且将有 5mb 的内存用于传递的变量。

但是 JavaScript 引擎中发生了什么?有什么方法可以发送 'pointer' 来运行,这样内存消耗就不会太大吗? T

提前致谢!

javascript 中的对象 通过引用传递。

我认为整数和字符串(等)不是,所以请注意这一点。

考虑将您的字符串添加到一个对象哈希引用中,然后您可以通过引用在链中向下传递。


例如:

var hashRef = {};
hashRef.b64_string = '......';  // <- string can be 5 megabytes 
function validate(hashRef) {
    ....
    return bool;
}
if(validate(hashRef)) {
    doSomething(hashRef);
}