输入无参数时JS函数会中断

时间:2017-12-11 16:10:03

标签: javascript function

这是一个简单的功能,根据输入的短语长度计算雕刻价格。

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 个答案:

答案 0 :(得分:1)

您需要检查phraseToEngrave。未定义,例如

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

或在ES6中,给它一个默认值:

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

答案 1 :(得分: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;
  }
}

如果没有传递,只会将其转换为空字符串。