Многие виды данных в JavaScript, например, массивы, могут не иметь какого-то определённого размера. Это означает, что в ходе выполнения программы их размер может изменяться. Размер строк также может изменяться, и часто в большую сторону. Сложные и большие структуры данных могут занимать много места в памяти, поэтому желательно эту память освобождать сразу после того, как она становится не нужна. При этом ссылочные переменные не содержат непосредственно данные, а лишь ссылки на них. Сами же данные хранятся в другом месте, а ссылочная переменная только указывает на местоположение этих данных. И, так как строки, объекты и массивы не имеют заранее заданного размера, место для их хранения должно выделяться динамически (во время выполнения сценария), когда размер данных становится известен. Когда сценарий на JavaScript создаёт, например, строку, интерпретатор (обычно это браузер) должен выделить память для хранения этой строки. После того, как строка больше не нужна, выделенная ранее память