очищает ли ArrayObject.length = 0 память, выделенную для ArrayObject?

#javascript

#javascript

Вопрос:

Если да, то чем это отличается от использования arrayObject = [] . Это две разные вещи или два способа сделать то же самое.

Ответ №1:

 array.length = 0;
  

сохраняет ссылку объекта на исходный массив.

 array = [];
  

создает новую ссылку на объект.

Комментарии:

1. Хорошим обновлением вашего ответа было бы показать этот эффект. Например. b = a, a.length=0; log(a===b), a=[], log(a===b) ==> true, false

2. Тогда лучше использовать свойство length для очистки массива. я прав?. В подобных случаях нам нужно очищать массив с помощью in в цикле каждый раз перед использованием.

3. @Роберт, это зависит от варианта использования. если вам это нужно в цикле, вы могли бы использовать локальную переменную внутри цикла, например const array = [] .

4. Если у вас есть ссылки на этот массив, да. Если нет, то вряд ли это будет иметь большое значение.

Ответ №2:

Да, похоже, что это действительно очищает память.

a=[] создаст новую ссылку для пустого массива.

 let a = [1, 2, 3];

a.length = 0;

console.log(a);

a.length = 2;

console.log(a);