使用JavaScript的简写进行字符串连接,用于纯数或单数术语


$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!');

最新更新