【发布时间】:2016-09-07 09:58:52
【问题描述】:
我正在尝试更习惯使用三元运算符而不是 if/else 语句。
下面发布的代码的第一个版本有效,但第二个版本给了我一条错误消息,说它们不是参数最长的长度属性,但是因为我已经设置了一个空字符串的初始条件,长度应该为 0。
这是我的代码的两个版本。如果有人能弄清楚我做错了什么,那就太好了。
带有 if 语句的工作代码
function findLongestWord(str) {
var strSplit = str.split(' ');
var longestWord = strSplit.reduce(function(longest, currentWord) {
if(currentWord.length > longest.length)
return currentWord;
else
return longest;
}, "");
return longestWord;
}
console.log(findLongestWord("The quick brown fox jumped over the lazy dog"));
带有不起作用的三元语句的代码
function findLongestWord(str) {
var strSplit = str.split(' ');
var longestWord = strSplit.reduce(function(longest, currentWord) {
currentWord.length > longest.length ? currentWord : longest;
}, "");
return longestWord;
}
console.log(findLongestWord("The quick brown fox jumped over the lazy dog"));
我的错误信息是:
currentWord.length > long.length ? currentWord : 最长的; ^ TypeError:无法读取未定义的属性“长度”
【问题讨论】:
-
需要返回三进制的结果。
return condition ? A : B.
标签: javascript if-statement ternary-operator