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

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

本文关键字:一个 堆栈 JavaScript 什么 变量 函数      更新时间:2024-01-29

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

考虑一下上传的字符串真的很大(高达5MB)。我已经编写了几个应该进行验证的函数,但我不知道引擎盖后面发生了什么。

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引擎会发生什么呢?有没有什么方法可以将"指针"发送到函数,这样内存消耗就不会太大?T

提前感谢!

javascript中的

对象是通过引用传递的。

我相信整数和字符串(等等)是而不是,所以要小心这一点。

考虑将字符串添加到对象哈希引用中,然后通过引用将其传递到链中。


例如:

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