坚持一个字符串返回

时间:2016-04-13 17:17:09

标签: javascript

关于如何在if语句中正确返回字符串,我已经完全清楚了。

function truncateString(str, num) {
  var s = str;
  var n = num;
  if(s > n.length) {
    return s.slice(0, n - 3).concat("...");
  } else return s;
}
truncateString("This string is too long", 11);

我知道我错了但却无法弄清楚如何让它发挥作用。 请不要发布解决方案,只是提醒我如何在if语句中正确返回字符串。

5 个答案:

答案 0 :(得分:1)

基本上number没有名为length的属性,

if(s.length > n)

完整代码将是,

function truncateString(str, num){
  var s = str;
  var n = num;
  if(s.length > n) {
    return s.slice(0, n - 3).concat("...");
  }
  else {
   return s;
  }
}

truncateString("This string is too long", 11);
//"This str..."

答案 1 :(得分:1)

您正在访问错误对象上的.length属性。 (您要求的是数字长度而不是字符串长度)。这意味着你的if语句的主要条件永远不会执行,并且该函数每次都返回整个字符串。

答案 2 :(得分:1)

没关系,你只是错误地交换了论据。

master

应该是

if(s > n.length)

答案 3 :(得分:0)

我相信你在逻辑上至少有一个错误。不要将s与n.length进行比较,而是需要将str / s长度与num / n进行比较。

我认为您尝试使用的是条件三元运算符?:

接下来是您的修改版本。

function truncateString(str, num) 
{
  var s = str;
  var n = num;

return (s.length > n) ?  s.slice(0, n - 3).concat("...") : s;

}

alert(truncateString("This string is too long", 11));

答案 4 :(得分:0)

变量'n'包含原始值但不包含对象。这就是变量'n'没有'length'属性的原因。所以n.length语句返回'undefined'值。最后s> n.length语句返回false,如果块从不执行。您可以使用s.length代替.Here's'保存字符串值,字符串也是JavaScript中的原始值,但是在运行时,只要您尝试访问包含length属性的任何属性,字符串值就会转换为其包装String对象。