Javascript 为什么';t str.endsWith(";-";)是否返回true?

Javascript 为什么';t str.endsWith(";-";)是否返回true?,javascript,Javascript,我截断字符串的函数必须满足某些条件,但其中一些条件有问题 试图满足这些条件 truncateString("A-tisket a-tasket A green and yellow basket", 11) 应返回“A-tisket…” 应返回“Peter Piper…” 应返回“A-tisket A-tasket A绿色和黄色篮子” 应返回“A-tisket A-tasket A绿色和黄色篮子” 这正是我难以满足的问题 truncateString("A-", 1) 应返回“A…” 应

我截断字符串的函数必须满足某些条件,但其中一些条件有问题

试图满足这些条件

truncateString("A-tisket a-tasket A green and yellow basket", 11) 
应返回
“A-tisket…”

应返回
“Peter Piper…”

应返回
“A-tisket A-tasket A绿色和黄色篮子”

应返回
“A-tisket A-tasket A绿色和黄色篮子”

这正是我难以满足的问题

truncateString("A-", 1) 
应返回
“A…”

应返回
“Ab…”

我的代码的测试片段:
函数truncateString(str,num){
//把你行李箱里的垃圾清理掉
var truncated=str.substr(0,num);
var-trunky=str;
if(截断的.endsWith(“-”)==true){
返回截断的.substr(0,(num)-3)+“…”;
}else if(截断的.endsWith(“i”)==true){
返回截断的.substr(0,(num)-3)+“…”;
}else if(截断的.endsWith(“b”)==true){
返回截断的.substr(0,(num))+“…”;
}else if(截断的.endsWith('/-')==true){
返回截断的.substr(0,(num))+“…”;
}否则
返回str;
}
var test=“A-tisket A-tasket A绿色和黄色篮子”;
log(truncateString(test,test.length))根据,函数
String.prototype.substr
可以包含起始和长度


在您的例子中,通过应用
“A-”,您正在将
“A-”
截断为
“A-”
。substr(0,1)
,因此它不会通过标题中的测试:
截断。endsWith(“-”
)不会
返回截断的。substr(0,(1)-3)+“…”;)
与被截断的
相同。substr(0,-2)+“…;
?当
num
为1时,
num-3
为负数,那么
substr(0,num-3)
会做什么?会得到什么而不是预期的结果?在第一种情况下,传递的是负数(1-3)将
substr
作为第二个参数,这将导致一个空字符串。顺便说一下,您可以删除
==true
truncateString("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length) 
truncateString("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length + 2) 
truncateString("A-", 1) 
truncateString("Absolutely Longer", 2)