这是一个简单的功能,根据输入的短语长度计算雕刻价格。
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"
有解决方法吗?
感谢。
答案 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;
}
}
如果没有传递,只会将其转换为空字符串。