2010-01-22 7 views
2

'Net ...'의 어디서나이 답변을 찾을 수 없습니다.함수 매개 변수를 변수로 다시 선언 하시겠습니까?

함수 매개 변수를 로컬 변수로 다시 선언하는 데 어떤 이유가 있습니까?

예 :

function(param1, param2) { 
    var param1, param2; 
    ...etc... 
} 

나에게 매우 중복 보이지만 어쩌면 내가 모르는 뭔가가있어 ...?

감사합니다,

브라이언

+0

자바 스크립트입니까? 그건 그렇고, 좋은 별명. – thomaspaulb

+0

하하, 고마워! 그리고 네, 그것은 JS입니다. :) – DondeEstaMiCulo

답변

3

될 것입니다 함수 매개 변수로서 그것은 절대적으로 아무것도하지 않습니다. 전혀 쓸모가 없다. 변수의 값을 변경하지 않습니다.

+0

이것은 내가 생각한 것입니다. 나는 다른 사람의 코드를 정리하고 있는데, 이것이 왜 필요하거나 심지어 유용 할 지에 대해서는 생각할 수 없다. 너 내 의심을 거의 확인 했어. 고마워. – DondeEstaMiCulo

+0

@trinithis -이 대답이 모든 주요 브라우저에 해당되는지 알고 있습니까? – nnnnnn

+0

그렇게 생각합니다. 나는 진절머리 나는 브라우저조차도 잘못 이해한다고 믿기 어렵다. –

0

종종이 필요하지만,이 경우에 유용 할 수 있습니다.

예를 몇

: 함수에서 그 변수의 값을 수정할 수 있지만 원래 값 나중에 기능에서 무슨 알 필요가있는 경우

, 당신은 잘 할 것이다 복사본을 만들어 가지고 앞.

때로는 first_integer_in_product_list과 같이 매우 유용한 설명이 포함 된 이름을 사용하는 것이 편리하지만 기능 내에 코드를 작성할 때는 i으로 작업하는 것이 좋습니다.

+0

OP는 변수를 다시 선언하고 새 값을 다시 할당하지 말 것을 요청했습니다. –

+0

그래, 그들은 복사본을 만들거나 편리한 변수 이름을 지정하지 않고 단지 값을 사용하지 않고 다시 선언 할 때'var' 만 사용하고 있습니다. – DondeEstaMiCulo

2

로컬 변수를 매개 변수와 같은 이름으로 다시 선언해야하는 이유가 없습니다. 대부분의 언어는 이것을 허용하지 않지만 JavaScript는 거의 모든 것을 허용합니다.

1

사용자가 함수 호출에서 아무 것도 전달하지 않은 경우 유용합니다. 예를

function X(param1, param2){ 
    param1 = param1 || 1; //set default values if param1 is nothing 
    param2 = param2 || {}; 
} 

뿐만 귀하의 예제에서

, 당신은 함수의 매개 변수를 덮어, 그래서 선언 된 변수의 이름은 것과 같은 경우 그냥 같은

function X(){ 
    var param1, param2; 
    ... 
} 
+0

OP는 var 키워드를 사용했습니다. –

+0

예,하지만 내 예제에서는 var 키워드가 필요하지 않습니다. 왜냐하면 함수 인수가 파기 되었기 때문입니다. – YOU

+0

또한 함수에 값을 전달하는 데 문제가 있습니다! –

0

S의 응답과 같이 벽에 무엇인가를해야하는 경우를 제외하고는 무엇이든 해를 끼치 지 않습니다. 피해야합니다. 읽기 쉬운 코드로 이어질 수 있으며 변수 범위에주의를 기울이지 않거나 이름을 잊어 버리면 스파게티 창고로 보낼 수 있습니다.

0

당신이 말하고있는 언어로 언급해야합니다. 대부분 같은 이름을 가진다면 오류 일 것입니다. 어떤 언어에서 그렇게 할 수있는 가장 큰 이유는 함수가 완료 될 때 즉시 파기하는 것이 아니라 지속 시간을 고정시키는 것과 같이 범위를 변경하는 것입니다.

+0

사과드립니다.이 경우 자바 스크립트입니다. 내 예제에서와 같이'var'을 사용하면 AFAIK 범위가 변경되지 않습니다. 변수는 어디에서도 사용되지 않으며 다른 변수에도 복사되지 않습니다. 나는이 코드를 코드에서 꽤 보았습니다. 그래서 이것이 일종의 "속임수"인지 궁금해지기 시작했습니다 ...;) – DondeEstaMiCulo

관련 문제