关于如何在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语句中正确返回字符串。
答案 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对象。