2011-01-28 10 views

답변

2
function display_message(bool, msg, remove_wrap) { 
    remove_wrap = remove_wrap === true; 
    if(bool === true) { 
     error = get_msg(msg, remove_wrap); 
    }else{ 
     error = get_error_msg(msg, remove_wrap); 
    } 
    $.fancybox(error, { 'autoDimensions' : false, 'width' : 450, 'height' : 'auto', 'transitionIn' : 'none', 'transitionOut' : 'none' }); 
} 
+0

이것은 첫 번째 게시물 (예제가없는 경우) 이후에 나온 해결책/답입니다. 그렇기 때문에 대답을 모두 받아 들여야합니다. 게임에 대한 답변이 모두 일을하는 모든 이에 게 감사드립니다. –

+1

두 번째 줄을'remove_wrap = remove_wrap === true;'로 줄일 수 있습니다. –

1

자바 스크립트 함수 매개 변수에 기본값을 제공 할 수는 없지만 정의되지 않은 채로두고 함수 시작 부분에 기본값을 지정할 수 있습니다.

예를 들어

:

function display_message(bool, msg, remove_wrap) { 
    if(undefined === remove_wrap) 
     remove_wrap = false; 

    //Rest of function 
} 

전화 같은이 기능 : display_message(true, "my msg");

1

당신은 다음과 같은 기본 값을 처리 할 수 ​​있습니다 : 함수 인 경우 기본값이 적용됩니다

function display_message(bool, msg, remove_wrap) { 
    if (remove_wrap == null) remove_wrap = false; 
    // rest of your code... 

} 

다음 중 하나와 함께 호출 :

display_message(some_bool, some_msg); 
// Or, 
display_message(some_bool, some_msg, null); 

null과 비교하면 발신자가 기본값을 묻는 메시지를 표시 할 수 있기 때문에 편리하지만 간단한 위조 비교처럼 0 또는 '' (빈 문자열)을 무시하는 경향이 없습니다.

1

당신은 함수 선언의 매개 변수 섹션에 기본 값을 선언 할 수 없습니다

function display_message(bool, msg, remove_wrap) { 
    if(remove_wrap === undefined) { 
    var remove_wrap = false; 
    } 
... 
1

을 시도합니다.

function display_message(bool, msg, remove_wrap) { 
    remove_wrap = remove_wrap || false; 
    // rest of code 
} 

따라서, remove_wrap가 정의되어있는 경우 그 자체와 동일있을 것이다, 그러나이 정의되지 않은 경우는 false로 설정됩니다 대신, 다음과 같이한다 기본적으로 귀하의 함수 선언을 선언합니다.

3

PHP 사용자이기 때문에 편리 할 수 ​​있습니다. 첫 번째 값 또는 두 번째 값에 해당하는 경우

function (some_var) { 
    some_var = some_var || 'default'; 
} 

PHP에서 "또는"운영자가 "true"를 반환합니다 JS 자신에서 오는, 사실은이 언어에 있던 가정, 몇 번을 엉망 그렇지 않으면 "거짓"입니다.

JavaScript에서 "or"연산자는 실제로 첫 번째 값인을 반환합니다. 두 값이 모두 위증 일 경우에만 false을 반환합니다. 두 값이 모두 위증하면 두 번째 값인 을 반환합니다. 즉 위는 기본값을 할당하는 매우 효율적인 방법입니다.

내가 옛날 지식 이었다면 진심으로 사과드립니다. 나는 누군가가 걸었 으면 좋겠다 나를 통해 언어를 전환했다.

4

JavaScript는 이와 같은 인수 기본값을 지원하지 않습니다. 다른 많은 사람들이 말했듯이, 함수 내에서 기본값을 선택할 수 있습니다.디폴트 값을 설정하기위한 간결한 관용구는 다음과 같습니다

arg = arg || default; 

따라서, 귀하의 경우는 다음과 같습니다 기본 값이 false 경우

remove_wrap = remove_wrap || false; 

그러나, 당신도 설정할 필요가 없습니다 그것. 그 인수가 결여 될 때, 그 값은 함수 내부 형 undefined이 될 것입니다, 그 값은 이미 "falsy"입니다, 때문에 :

function display_message(bool, msg, remove_wrap) { 
    var error = bool 
     ? get_msg(msg, remove_wrap) 
     : get_error_msg(msg, remove_wrap); 

    $.fancybox(error, { 
     autoDimensions: false, 
     width: 450, 
     height: "auto", 
     transitionIn: "none", 
     transitionOut: "none" 
    }); 
} 

보너스 : 그대로 직접 remove_wrap을 사용할 수 있습니다 참고 또한 error 변수에 var을 추가했습니다 (실제 변수가 전역 변수를 만들지 않는 한 var을 생략하지 마십시오). 또한 과제를 3 진 표현으로 단축했습니다. 또한 대부분의 사람들이 읽을 수있는 문법으로 fancybox 호출을 다시 포맷했습니다.