2012-01-10 3 views
0

자바 스크립트 (가능하다면)가 함수의 변수 입력과 같은 이름을 가진 변수에 어떻게 액세스하는지 궁금합니다.함수 변수와 함수 변수에 같은 이름이 있습니다. 액세스하는 방법?

function myfunc(var1) 
{ 
    var var1 = "World"; 
    alert(var1); 
} 

var1이 인쇄 할 기능을 어떻게 알 수 있습니까?

+3

대신 고유 변수 이름을 사용하는 것이 어떻습니까? : -3 – deceze

+2

왜 같은 이름을 사용하고 싶습니까? – AmGates

+0

첫 번째 의견은 부적절한 질문이므로 두 번째 질문에 답변 해 주시기 바랍니다. "궁금 해서요"라는 말은 ... –

답변

3

에서 nnnnnn이 올바른지, 나는 그것을 테스트. 함수에 전달 된 인수는 매개 변수 이름과 arguments 변수를 통해 두 가지 방법으로 액세스 할 수 있습니다. arguments[0]은 첫 번째 매개 변수의 값입니다.

아래의 예에서는 두 개의 경고가 나타납니다. 첫 번째 경고는 "Hello"이고 두 번째 경고는 "World"입니다. 그러나 그들은 을 할당하면 함수에 전달되는 인수 값이 실제로 변경된다는 것을 증명한다고 "World"이 말합니다.

function myfunc(var1) { 
    var var1 = "World"; 
    alert(arguments[0]); 
    alert(var1); 
} 

myfunc("Hello"); 
+1

실제로 JS 1.8.5의 엄격 모드에서 명명 된 매개 변수의 변경으로 인해'arguments' 객체가 업데이트되지 않기 때문에 엄격 모드에서 예제 "Hello" "World"라고 말하면 좋겠지 만, 물을 진흙 투성이로하거나 함수 인수와 같은 이름의 지역 변수 생성을 권장하지 않기 때문에 의도적으로 언급하지 않았습니다. 또한 (마지막으로 살펴 보았을 때) 엄격 모드를 지원한다고 주장하는 일부 브라우저는 실제로이 규칙을 구현하지 않았습니다. – nnnnnn

+0

@nnnnnn 어떻게하는지 알고 싶습니다. 내가하는 말은 아니다. 나는 호기심이 많다. 보여 주시겠습니까? –

+0

nnnnnn은 엄격한 모드에서 JavaScript를 실행하는 경우 "Hello"라는 경고와 "World"라는 경고가 표시되는 곳에서 내가 제공 한 코드 샘플이 작동한다고 말합니다. 최대한 엄격 모드로 표시되는 방법에 대해 자세히 알아 보려면 http://goo.gl/DbsKb - 브라우저에서 지원하는 방식과 지원 방식에 대해 자세히 알아 보거나 검색해야합니다. 시행 착오를 통해 –

6

실제로 동일한 이름을 가진 두 번째 변수를 정의하지는 않습니다. var 문을 사용하더라도 동일한 이름의 함수 매개 변수를 겹쳐 쓰는 것입니다.

두 번째 변수에 고유 한 이름을 지정하십시오.

은 (그건 그렇고,이 사실 일 경우에도 여전히 코드를 읽기 어려운 만들 것 때문에 나쁜 생각이 될 것입니다.)

관련 문제