[javascript] 자바 스크립트 : location.href와 위치 설정

당신은 설정 할 때 location설정 대 URL 문자열 location.href?

location = "http://www.stackoverflow.com";

vs

location.href = "http://www.stackoverflow.com";

Mozilla 개발자 네트워크 참조



답변

location약간 짧아서 직접 설정할 수 있습니다 . 간결 해 지려고한다면 보통 window.너무 생략 해도됩니다.

모두 URL 할당 location.href하고 location다시 넷스케이프 2, 자바 스크립트 1.0 일에 정의되어, 이후 모든 브라우저에서 구현되고있다. 따라서 선택하고 가장 명확한 것을 사용하십시오.


답변

두 가지 모두 작동하더라도 후자를 사용합니다.
location는 객체이며 문자열을 객체에 할당해도 가독성이나 유지 관리에 적합하지 않습니다.


답변

이미 말했듯이 location객체 입니다. 그러나 그 사람은 둘 중 하나를 사용하도록 제안했습니다. 그러나 .href버전 을 사용하는 것이 좋습니다 .

객체에는 다른 속성이 지정되지 않은 경우 기본 속성이 있습니다. location객체 의 경우 라는 속성이 .href있습니다. 그리고 할당하는 동안 ANY 속성을 지정하지 않으면 기본적으로 “href”로 간주됩니다.

이후의 객체 모델 버전이 변경되고 더 이상 기본 속성이 없거나 기본 속성이 변경 될 때까지이 모든 것이 정상입니다. 그러면 프로그램이 예기치 않게 중단됩니다.

의미 href하는 경우을 지정해야 href합니다.


답변

몇 년 전 locationIE에서 저에게 location.href효과가 없었으며 다른 브라우저에서도 효과가있었습니다. 그 이후로 나는 항상 방금 사용 location.href했으며 다시는 문제가 없었습니다. 어떤 버전의 IE인지 기억할 수 없습니다.


답변

그냥 명확히하기 위해 당신이 할 수없는 location.split('#'), location객체가 아닌 문자열입니다. 그러나 문자열 location.href.split('#');이기 때문에 할 수 있습니다 location.href.


답변

그러나 명심해야 할 한 가지 차이점입니다.

현재 URL을 사용하여 URL을 작성한다고 가정 해 봅시다. 다음 코드는 실제로 호출하지 String.replace않지만 다음 코드를 리디렉션합니다 Location.replace.

nextUrl = window.location.replace('/step1', '/step2');

다음 코드가 작동합니다.

// cast to string
nextUrl = (window.location+'').replace('/step1', '/step2');

// href property
nextUrl = window.location.href.replace('/step1', '/step2');


답변

TypeScript를 사용하면 기술적으로 다음과 같은 객체가 사용 window.location.href됩니다 window.location.

Properties
hash
host
hostname
href    <--- you need this
pathname (relative to the host)
port
protocol
search 

문자열 형식 window.location인 동안 설정 하면 형식 오류가 발생
window.location.href합니다.

출처