$scope.msg = 'Ok, you ate ' + num + ' hotdog'
+ (num.length > 1) ? 's' : '' + ', got it!';
为什么上面$ scope.msg仅返回's'?我希望纯粹和热狗的热狗与速记一起使用。嗯,无法遇到错误。
您需要更多的括号。
您的代码被解析为('Ok, you ate ' + num + ' hotdog' + (num.length > 1))
?'s'
:('' + ', got it!')
。
您需要将整个条件表达式包裹在括号中。
您可以将括号稍有不同,仅用于三元语句,并在没有某些属性的情况下拿出num
值。
$scope.msg = 'Ok, you ate ' + num + ' hotdog' + (num > 1 ? 's' : '') + ', got it!';
var num = 1;
console.log('Ok, you ate ' + num + ' hotdog' + (num > 1 ? 's' : '') + ', got it!');
num = 3;
console.log('Ok, you ate ' + num + ' hotdog' + (num > 1 ? 's' : '') + ', got it!');
如果您有多个单词的多元化词,则可以使用一个对象和功能来访问
,例如
function getPlural(number, word) {
return number === 1 && word.one || word.other;
}
var hotdog = { one: 'hotdog', other: 'hotdogs' },
num = 1;
console.log('Ok, you ate ' + num + ' ' + getPlural(num, hotdog) + ', got it!');
num = 5;
console.log('Ok, you ate ' + num + ' ' + getPlural(num, hotdog) + ', got it!');