Javascript can';t将if语句缩短为三元

Javascript can';t将if语句缩短为三元,javascript,if-statement,ternary-operator,Javascript,If Statement,Ternary Operator,我试图更习惯于使用三元运算符而不是if/else语句 下面发布的代码的第一个版本是有效的,但是第二个版本给了我一条错误消息,说他们的属性不是参数longest的length属性,但是因为我已经设置了空字符串的初始条件,所以长度应该是0 这是我的两个版本的代码。如果有人能找出我做错了什么,那就太好了 工作代码w/if语句 function findLongestWord(str) { var strSplit = str.split(' '); var longestWord = strS

我试图更习惯于使用三元运算符而不是if/else语句

下面发布的代码的第一个版本是有效的,但是第二个版本给了我一条错误消息,说他们的属性不是参数longest的length属性,但是因为我已经设置了空字符串的初始条件,所以长度应该是0

这是我的两个版本的代码。如果有人能找出我做错了什么,那就太好了

工作代码w/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"));
代码w/三元语句不起作用

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>最长.length?当前单词:最长; ^ TypeError:无法读取未定义的属性“length”

function findLongestWord(str) {
  var strSplit = str.split(' ');
  var longestWord = strSplit.reduce(function(longest, currentWord) {
    return currentWord.length > longest.length ? currentWord : longest;
  }, "");
  return longestWord;
}
返回结果


如果不返回结果,则默认返回undefined。它将尝试获取未定义的长度,这就是它抛出错误的原因。

您没有返回三元运算结果

return currentWord.length > longest.length ? currentWord : longest;
不是三元形式的

if(currentWord.length > longest.length)
    return currentWord;
else
    return longest;
因为您忘记包含
return
语句:

return currentWord.length > longest.length ? currentWord : longest;
试试这个:

函数findLongestWord(str){

函数findLongestWord(str){
var strSplit=str.split(“”);
返回strSplit.reduce(函数(最长,当前字){
返回(currentWord.length>longest.length)?currentWord:longest;
});
}

document.write(findLongestWord(“敏捷的棕色狐狸跳过了懒狗”);
您需要返回三元的结果。
返回条件?A:B
。如果答案中包含一些代码外的单词来解释您所做的事情和原因,那么答案总是更好。
return currentWord.length > longest.length ? currentWord : longest;