2017-12-11 1 views
-2

입력 된 구의 길이에 따라 판화 가격을 계산하는 간단한 함수입니다.인수가 입력되지 않으면 JS 함수가 중단됩니다.

function engravePrice(phraseToEngrave) { 

    var pricePerWord = 11; 
    var wordsToEngrave = phraseToEngrave.split(' '); 

    if (phraseToEngrave.length === 0){ 
    return 0; 
    } else if (phraseToEngrave.length > 0){ 
    return wordsToEngrave.length * pricePerWord; 
    } 
} 

console.log(`Gift wrap and engraving price is: ${engravePrice('')} Q`); 

은 실제로 꽤 잘 작동합니다

engravePrice('Two words') //will return 22, as expected 
engravePrice('') //will return 0, as expected 

하나 개의 특정 상황을 제외하고 : 그에 대한 해결책은

engravePrice() //when it breaks, saying "cannot read property 'split' of undefined" 

있습니까?

감사합니다.

+2

입력이 없을 때 무엇을하고 싶습니까? –

+1

빈 문자열과 동일한 값을 반환해야한다면'phraseToEngrave = phraseToEngrave || '';를 함수의 첫 번째 줄로 사용하십시오. – Santi

+1

또는'engravePrice (phraseToEngrave = '') –

답변

1

phraseToEngrave을 확인해야합니다.

function engravePrice(phraseToEngrave = '') { 
    ... 
    } 
+0

es6 솔루션에 대한 내 upvote가 있습니다. –

0

내가 이런 식으로 할 것 : 아무것도 전달되지 않은 경우 그냥 빈 문자열로 변환

function engravePrice(phraseToEngrave) { 
    var phraseToEngrave = phraseToEngrave || ''; 
    var pricePerWord = 11; 
    var wordsToEngrave = phraseToEngrave.split(' '); 

    if (phraseToEngrave.length === 0){ 
    return 0; 
    } else if (phraseToEngrave.length > 0){ 
    return wordsToEngrave.length * pricePerWord; 
    } 
} 

function engravePrice(phraseToEngrave) { 
if (!phraseToEngrave) return 0; 
... 
} 

또는 ES6의

은, 그것을 기본을 제공합니다.

관련 문제