2014-05-20 133 views
1

我正在使用for循环来有条件地迭代HTML输入并连接管道分隔字符串。因为我不想要结尾的管道字符,我使用foo.slice(0, -1)JavaScript空字符串切片

在我看来,有可能没有输入,所以foo将是一个空字符串。我不知道如果foo.slice(0, -1)是跨浏览器的安全在这种情况下,所以我尝试这样做:

var foo = ""; 
foo = foo.slice(0, -1); 

火狐“浏览器控制台”并没有抱怨令人惊讶的,所以我认为某种边界检查是怎么回事,但要问到确定。我知道像if (foo) …这样的测试足以检查一个空字符串,但不确定是否有必要。我似乎无法找到这事在参考文献:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

回答

4

按照ECMA 5.1 Specifications for Array.prototype.slice,如果最终是为负,那么将使用最大长度+结束索引和零。

如果relativeEnd为负,让最终是max((len + relativeEnd),0);不然,最后是min(relativeEnd,len)

因此,即使字符串为空并且您传递负指数,它也会安全地使用0来结束。

+0

谢谢,我必须将其标记为 – asimes