2013-03-08 4 views
3

자바 스크립트에서는 경험이 거의 없지만 다른 프로그래밍 언어에서는 함수에서 누락 된 매개 변수의 기본값을 설정하는 것이 가능합니다.자바 스크립트 함수에서 아무런 인수도 처리하지 않습니다.

: 예를 들어

내가

function foo(a , b) 
    return a + b 
{ 

내가 1 개 매개 변수 2 개 매개 변수

하나의 매개 변수 케이스 위의 함수를 호출 할 수 싶습니다 기능을 갖고 있다고 할 수 있습니다

foo(2) //a =2 and b would be automatically set to a default no argument value, 

2 가지 매개 변수 경우 :

foo(1,2) // a = 1 , b = 2 => 3 

IE 8과 호환되거나 Jquery 1.7.2를 사용하는 자바 스크립트에서 가능합니까?

답변

6

자바 스크립트 함수를 사용하면보다 적은 매개 변수를 호출 할 수 지정된.

function foo(a , b){ 
    if(typeof b === "undefined"){ 
     b=3; 
    } 
    return a + b; 
} 
foo(5);//return 3; 

난 강력하게 당신이 undefined하지를 확인하는 것이 좋습니다는 || 연산자에 의존 : 당신이 달성하기 위해 노력하고 무엇

는 다음과 같은 일을 할 수 있습니다. 그 가정을 만든 코드를 디버깅하는 데 시간을 보냈으며 0 또는 다른 위조 된 값을 전달할 때 실패했습니다. JavaScript 유형 시스템은 매우 까다로워 질 수 있습니다. 예를 들어 "0"은 위증입니다.

인 ECMAScript 하모니 (다음 버전) 그 다른 언어로이 비록 첫 번째 버전처럼 IE8에서 작동하지 않습니다 다음 구문

function foo(a , b=3){ 
    return a + b; 
} 

를 사용하여 같은 기본 매개 변수를 할 수 있습니다. 당신이 당신의 함수 foo의 beggining에서 같은 것을 할 수

+1

이 받아 들일 수를 테스트하여

function foo(a, b) { if(typeof b === "undefined") {b = 2;} } 

을 가장 좋은 대답은'undefined'를 실제로 확인하는 유일한 사람입니다 ... –

+0

예. 정의되지 않은 검사가 실제로 필요합니다. – pyCthon

+0

@pyCthon 내 대답이 마음에 들면 받아 들일지 또는 어떤 부분을 말하지 않았습니까? 생각은 분명하다. h 그래서 나는 그것을 향상시킬 수있다. –

3

예, 가능합니다. 매개 변수가 전달되지 않으면 "정의되지 않은"특수 값을 얻습니다. 나를 위해 다음 작품 : 자바 스크립트가 부울로 변환을 처리

function foo(a, b) { 
    a = a || defaultForA; 
    b = b || defaultForB; 

} 

인해 방식은, 다음은 모두 위의 코드에서 정의되지 않은 것으로 간주됩니다

undefined 
null 
0 
"" (empty string) 
false 

그 값에 중요한 그래서 경우 너는 위에서 사용 된 "거짓이 아니라면"담요가 아닌 정의되지 않은 것을 명시 적으로 테스트해야 할 것이다.

3

아니,하지만 문이 경우 당신은 차 운전자 또는 수동으로이 효과를 시뮬레이션 할 수 있습니다 (당신이 undefined를 확인하십시오!) :

function foo(a, b) { 
    b = (typeof b === "undefined") ? 2 : b; 

    return a + b; 
} 
2

정의되지 않은 매개 변수가 false로 평가 : A 또는 B가 존재하는 경우

a = a || 0; 
b = b || 0; 

그런 식으로, 그들은 자신의 값으로 평가되며, 그렇지 않으면 0입니다.

2

당신이 매개 변수를받은 경우 그냥 테스트 할 수 있습니다 : "정의되지 않은"당신은 또한 false로 평가 매개 변수 (같은 null 또는 "" 또는 0 또는 false)