2

다음 코드가 정의되지 않은 것을 경고하지 않는 이유는 무엇입니까?같은 이름의 변수에 매개 변수를 할당하는 것이 JavaScript에서 어떻게 작동합니까?

function test(param){ 
    var param = param; 
    alert(param); 
} 
test("SO"); // alerts SO 
로컬 변수에 할당되고 PARAM 로컬 변수 자체 함수의 인수와 일치하고 있지 않은 것을 어떻게

?
오른쪽 값에 함수 인수에 대해 "일치하는 기본 설정"이 있습니까? 원인은 무엇입니까?

param = param; 

var에 선언이 아무것도하지 않는 :

var param; 

두 번째는 assignement입니다 :

var param = param; 

첫 번째에서 두 부분이 있습니다

+0

그 코드는'undefined'를 반환 않습니다. – Andy

+0

네 말이 맞아, 나 자신을 분명하게 표현하지 못했다. 디스트로이는 이미 내가 의미 한 바에 따라 나의 질문을 편집한다. –

답변

2

는 VAR 선언이다 변수가 이미 존재하므로 (변수의 범위는 전체 함수 호출입니다). 그리고 동일한 가치를 지니고 있기 때문에 배정은 아무 것도하지 않습니다.

당신은 다른 값을 할당하여 그것을 확인할 수 있습니다 : 경고가 닫힌 후

function test(param){ 
    console.log('1', param) // logs "SO" 
    var param = param+"4"; 
    console.log('2', param) // logs "SO4" 
} 
test("SO"); 
+0

"변수의 범위는 전체 함수 호출입니다."내가 올바르게 이해할 수 있을지 모르겠다. 함수 인수가 암시 적으로 함수 내부에서 선언된다는 것을 의미합니까? –

+0

예, 함수 인수는 변수로 선언됩니다 (또한 값을 변경할 수 있음을 나타냄). –

+0

좋아요! 당신의 대답을 수락하십시오. –

관련 문제