将变量传递给函数时,JavaScript堆栈会发生什么?

时间:2016-04-06 19:05:31

标签: javascript stack v8

我正在使用JavaScript(Express)编写服务器端应用程序。所以我必须验证一个大的字符流(基本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引擎会发生什么?有没有办法发送指针&#39;功能所以内存消耗不会太大? Ť

提前致谢!

1 个答案:

答案 0 :(得分:2)

javascript中的

对象通过引用传递。

我认为整数和字符串(等),所以要小心这一点。

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

例如:

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