Будет ли функция (без аргументов), вызывающая себя на неопределенный срок, вызывать ошибку памяти в JavaScript? - PullRequest
0 голосов
/ 07 августа 2020

Рассмотрим следующий блок псевдокода:

async function  someFunction(){
    if (condition is met){
        ...
        ...
        ...
        someFunction();
    }
    else{
        ...
        ...
        ...
        someOtherFunction();
    }
}

Будет ли каждый раз, когда вы вызываете someFunction(), выделять для него память и все же сохранять someFunction(), который сделал вызов, в памяти или JavaScript достаточно умен, чтобы понять, что как только someFunction() вызывает саму себя, функция, которая вызывала вызов, больше не нужна и ей не нужно будет оставаться в памяти. Обратите внимание, что someFunction() не принимает никаких аргументов. Я считаю, что если бы он принимал аргументы, его всегда нужно было бы сохранять в памяти, но я мог ошибаться.

Если вышеупомянутая реализация по-прежнему сохраняет каждый вызов функции в памяти, то что было бы правильным делать? . Было бы return someFunction() в блоке if?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...