내 콘솔에 undefined
이 표시되는 이유가 확실하지 않습니다. 범위 변수에 대해 읽고 범위 외부에서 변수를 정의하면 해당 변수를 특정 함수 범위 외부에서 액세스 가능하게해야한다는 것을 알게되었습니다. 은 내가 잘못 여기서 뭐하는 거지 확실하지 무엇을 : 내 콘솔이 값이 할당되기 전에 당신이 loc
를 기록하고 있습니다 beacuse 즉 undefined
정의되지 않은 값, 가변 범위 문제
답변
를 로깅
const history = createHistory();
const location = history.location;
let loc;
const listen = history.listen((location) => {
loc = `${location.search}${location.hash}`;
return loc;
})
console.log(loc);
. 값이 undefined
이되도록 초기화됩니다. 청취에 전달 된 콜백이 호출 될 때 값이 할당됩니다. 난 당신이 정말로 그것을 돌려 또는 귀하의 질문에 설명 된 방법을 사용할 수 없습니다 이러한 맥락에서, 그래서 listen
이 asynchronus이라고 가정
const history = createHistory();
const location = history.location;
let loc;
const listen = history.listen((location) => {
loc = `${location.search}${location.hash}`;
console.log(loc);
})
: 당신이 당신의 코드를 변경해야 정확한 값을 기록합니다. 그러나 일단 listen
콜백에 있으면 다른 콜백에 그 값을 전달할 수 있습니다. 자세한 설명 및 예는 How do I return the response from an asynchronous call?을 참조하십시오.
응답 해 주셔서 감사합니다! 여기서 문제는'listen' 함수 밖에서'loc'을 사용하고 싶다는 것입니다. 현재 단순화를 위해 console.log 만 있습니다. 하지만 내가하고 싶은 일은'listen' 내에'log'에 값을 할당하면, 그 값으로 나열된 것 이외의 곳에'loc'를 사용하고 싶습니다. 그게 가능하니? – vanegeek
console.log(loc);
순간에 그 변수는 정의되지 않았습니다. 그 후 실행이 기능
(location) => { loc = `${location.search}${location.hash}`; }
으로
.
문제는 위치가 변경 될 때만 history.listen 메서드가 호출된다는 것입니다. history.listen (...) 호출은 히스토리가 변경 될 때 호출되어야하지만 아직 그 코드가 실행되지 않은 코드를 선언합니다. 역사는 여전히 (
- 몇 가지 상수를 선언하고 변수
- 이 몇 가지 코드를 등록 의사에 , 여기 당신이 지시 한 것입니다 을 : 당신이 무슨 뜻인지 콘솔에 초기화되지 않은) 변수는
이 가까이있을 수 있습니다 0
const history = createHistory();
const location = history.location;
let loc;
const listen = history.listen((location) => {
loc = `${location.search}${location.hash}`;
console.log(loc);
})
나머지는 말했다 : loc
위치를 변경할 때까지 변수에 값이 할당되지 않으므로 수신 방법이 실행됩니다. 그때까지의 값은 undefined
입니다. 또한 변수를 갖고 싶고 코드의 위에 선언했을 때 loc
의 반환 값을 얻는 이유는 무엇입니까?
'location'은'window.location' 또는 심지어'location'로 액세스 할 수있는'window'의 전역 변수입니다. – JohnnyCoder