IT Share you

location.href 속성 대 location.assign () 메서드

shareyou 2020. 12. 1. 20:00
반응형

location.href 속성 대 location.assign () 메서드


location.href = url반대로 사용 하는 것 사이에 JavaScript 메모리 소비에 특별한 장점 / 단점 location.assign(url)있습니까?

속성을 설정하는 것과 달리 메서드에 액세스하는 데 더 많은 메모리가 필요한지 궁금합니다.


나는 항상 사용하고 문제가 없었습니다.

location.href = url;

함수를 호출하는 것은 속성에 액세스하는 것보다 약간 느려 야하지만 메모리 측면에서 내 겸손한 의견에는 큰 차이가 없어야합니다.


저는 개인적으로 대신 함수를 호출하는 것을 선호합니다. 왜냐하면 함수를 호출하면 무언가가 실행되고 있다는 인상을 줄 수 있고 변경되는 변수의 값일뿐 아니라는 인상을주기 때문입니다.

그러나 아마도 그렇습니다 . JavaScript 엔진 구현에 따라 다를 수 있지만 location.href = url;보다 빠른 것이 사실 일 수 있습니다 . 방금 만든 테스트를location.assign(url) 참조하십시오 .


나는 이것이 오래되었다는 것을 알고 있지만 내 단위 테스트가 올바른 URL로 리디렉션되는지 확인하는 방법을 찾고있을 때 이것을 우연히 발견했습니다.

window.location.assign()테스트에 더 관심이 있다면 함께 갈 것입니다 . 함수를 사용하면 해당 함수를 모의하고 URL 입력 매개 변수를 확인할 수 있습니다.

따라서 jest를 사용하여 :

window.location.assign = jest.fn();

myUrlUpdateFunction();

expect(window.location.assign).toBeCalledWith('http://my.url');

// Clean up :)
window.location.assign.mockRestore();

location.assign (url)과 반대로 location.href = url을 사용하는 것 사이에 JavaScript 메모리 소비에 특별한 장점 / 단점이 있습니까?

아니

정확히 차이가 없습니다.

그 이유는 간단합니다. 브라우저가 새 페이지를로드 할 때마다 해당 VM에서 실행중인 해당 페이지에 대한 스크립트를 사용하여 새 Javascript 'VM'을 시작합니다. 질문의 문 중 하나를 실행할 때 브라우저에 새 페이지를로드하도록 지시하는 것입니다. 즉, 현재 VM을 파괴하고 (및 이와 관련된 모든 메모리를 확보) 새 페이지에 대해 완전히 새로운 VM을로드합니다.

이상한 브라우저 버그를 저장하면 순 효과는 항상 동일합니다. 스크립트는 완전히 동일한 메모리 소비로 완전히 새로운 VM에서 실행됩니다.

ulocation

브라우저에서 위치 객체로 작업하고 Node JS에서이 코드를 실행할 수 있도록하려면 (예 : 테스트 또는 등각 투영 코드) ulocationLocation 객체의 범용 / 등각 구현 인을 사용할 수 있습니다 . 전체 공개 : 나는 그 패키지의 저자입니다.


내 컴퓨터 / 브라우저, http://jsperf.com/location-href-vs-location-assign/2 , Windows Server 2008 R2 / 7 64 비트에서 Chrome 40.0.2214.93 32 비트 용으로 테스트했습니다.

location.assign은 location.href보다 15 % 느 렸습니다.

참고 URL : https://stackoverflow.com/questions/10302905/location-href-property-vs-location-assign-method

반응형