Свойство location.href свойство vs. location.assign()

Есть ли какое-либо особое преимущество/недостаток в потреблении памяти JavaScript между использованием location.href = url, а не location.assign(url)?

Я думаю, мне интересно, требуется ли больше памяти для доступа к методу, а не к настройке свойства.

Ответ 1

Я всегда использовал и никогда не имел проблем с:

location.href = url;

вызов функции должен быть немного медленнее, чем доступ к свойству, но с точки зрения памяти не должно быть большой разницы в моем скромном мнении

Ответ 2

Я лично предпочитаю называть функцию вместо этого, потому что вызов функции дает мне лучшее впечатление, что что-то работает, и это не только значение изменяющейся переменной.

Но, возможно, да, может быть, верно, что location.href = url; быстрее, чем location.assign(url), хотя это может зависеть от реализации механизма JavaScript, см. тест, который я только что создал.

Ответ 3

Протестировал мою машину/браузер, http://jsperf.com/location-href-vs-location-assign/2, для Chrome 40.0.2214.93 32-разрядная версия для Windows Server 2008 R2/7 64-разрядная

location.assign был на 15% медленнее, чем location.href.

Ответ 4

Есть ли какое-либо конкретное преимущество/недостаток в потреблении памяти JavaScript между использованием location.href= url в отличие от location.assign(url)?

НЕТ

Существует ровно нулевая разница.

Причина этого проста. Каждый раз, когда ваш браузер загружает новую страницу, он запускает новую новую виртуальную машину Javascript со сценариями для этой страницы, запущенной на этой виртуальной машине. При запуске любого из утверждений в вашем вопросе вы поручаете браузеру загружать новую страницу, что означает уничтожение текущей виртуальной машины (и освобождение любой связанной с ней памяти) и загрузку полностью новой виртуальной машины для новой страницы.

Сохранить для любых странных ошибок браузера, чистый эффект всегда один и тот же. Ваши скрипты работают в совершенно новой виртуальной машине с одинаковым объемом памяти.