2012-03-21 3 views
0

비슷한 질문을 찾을 수 없습니다. 올바른 질문/답변을 찾을 수 없기 때문입니다. 함수를 호출 할 때 전달 된 인수가 없으면 기본값을 함수의 매개 변수로 전달 된 값으로 바꾸면 기본값을 사용할 함수를 만들고 싶습니다. 예를 들어 : 전화 어떤 PARAMS없는 기능 openBlock() 경우 자바 스크립트 함수는 기본값이 필요하지 않습니다.

function openBlock(false){ 
    // if parameter was passed with 'false' value, it will do this 

    // else it will put automatically a 'true' value to an function's argument 
} 

그래서, 그것은 기본적으로 PARAM true 있다고 생각합니다. openBlock(false)과 같은 인수가 false 인 함수를 호출하면 기본 동작이 무시됩니다.

감사합니다.

답변

2

, 자바 스크립트에서이 작업을 수행하는 여러 가지 방법이 있습니다 가장 쉬운 패턴은 다음과 같습니다.

function(option) { 
    option = option || "default"; 
    // do stuff 
} 

그러나 @FelixKling 노트로,이 사건에서 작동하지 않습니다, 그것은 것 같은 false-y 값 (명시 적으로 인수를 false으로 설정하는 것을 포함하여)을 기본값으로 바꾸십시오. 당신이 true을 기본값으로 할 부울 인수를 들어, 당신이 필요합니다

이상의 하나 또는 두 개의 인수를 상대하고
function(option) { 
    // default to "true" 
    option = option !== undefined ? option : true; 
    // do stuff 
} 

이, 가장 좋은 방법은 하나의 options 또는 config 인수를 사용하고 있는지 확인하는 것이있다 속성의 존재 :

당신이 jQuery를 같은 라이브러리를 사용하거나 강조하는 경우
function(options) { 
    var arg1 = option.arg1 !== undefined ? false : true; 
    var arg2 = option.arg2 || "default"; 
    // do stuff 
} 

extend 방법이 상당히 쉬운 기본 값으로 객체를 설정 한 다음 존재하는 경우 제공된 값을 덮어 쓸 수 있습니다 :

function(options) { 
    var defaults = { 
     arg1: true, 
     arg2: "default" 
    }; 
    options _.extend(defaults, options); 
    // do stuff 
} 
+0

'option'이'false'이면'true'로 설정 될 것입니다 ... –

+0

@FelixKling - true, updated. false-y 값을 불리언 값이 아니라 기본값으로 대체해야하는 경우이 패턴을 사용합니다. – nrabinowitz

+0

정말 고마워요. 제가 물었던 바로 그 것 같아요. 지금 확인해보세요. – aspirinemaga

2

JavaScript에는 다른 언어와 마찬가지로 구현 된 기본 매개 변수가 없습니다.

당신은 그들에게 자신을 구현해야합니다 :

function openBlock(argument) { 
    argument = typeof argument !== 'undefined'; 
} 

가 더 일반적인 접근 방식 Is there a better way to do optional function parameters in Javascript?에서 살펴 보자. 아무도가 내장되지 않습니다하지만

+0

제출해 주셔서 감사합니다. – aspirinemaga

+0

'openBlock (true)'는이 코드에서'openBlock (false)'와 같습니다. –

+0

@ MaxNanasy : 내가 이것을 썼을 때 내가 생각하고 있던 것이 확실하지 않은 것 ... – Blender

관련 문제