var name="nameSomnath";//remove name
我可以使用slice()
var result = name.slice( 4 );
substring()
var result = name.substring( 4 );
那是什么让他们与众不同。
我已经看到链接Here,它详细说明了差异。但我们可以通过使用任何一种方法(即slice()
或substring()
来做同样的事情。那么为什么需要有两种方法呢?
答案 0 :(得分:3)
即使它看起来像slice
和substring
表面上做同样的事情,但最大的区别在于它们如何处理否定论点。
首次在Netscape 2.0中创建JavaScript时,只有substring
方法。如果其中任何一个参数为负数,则将它们视为0。
当使用Netscape 4.0引入JavaScript 1.2时,他们希望添加允许负索引表示距字符串末尾的距离的行为。他们无法更改substring
以获得此新行为,因为它会破坏与预期负索引被视为0的脚本的向后兼容性,因此他们必须创建一个新函数来支持添加的功能。此功能称为slice
,已在Array
以及String
上实施。
另一个较小的区别是substring
与参数的顺序无关,因此substring(1, 4)
与substring(4, 1)
相同。对于slice
,订单确实很重要,因此slice(4, 1)
只会产生一个空字符串。
答案 1 :(得分:2)
使它们与众不同的一个项目是您省略的第二个参数
slice
:第二个参数是要采用的范围的结束索引(不包括)。 substr
:第二个参数是从第一个参数指定的索引中获取的字符串的长度你能在string
个实例上完全复制一个方法与另一个方法的行为吗?是。为什么他们选择包括两者可能会失去历史。我的猜测虽然很熟悉。我敢打赌,那里的框架非常少slice
strings
但substr
的框架很多。
答案 2 :(得分:1)
修改强>: Oooops - 我错了 - 这里有一个切片方法!我会再次删除我的帖子 - 抱歉没有正确研究!!!或者,好吧,可能不会删除它,但至少要在其中保留此更正。 ; - )
您正在研究两种不同类的方法。 substr
只能应用于String
- slice
属于Array
- 对象时的对象。它们可能看似与yo类似,但在内部它们以不同的方式工作,因为它们处理的数据不同。
答案 3 :(得分:1)
.slice(开始,结束)
不包括给定的结束索引元素
.substr(开始,长度)
从开始位置提取到否。 chars。指定
.substring(start,end)
提取两个指定索引 之间的字符
答案 4 :(得分:0)
在slice
中,参数是第一个索引和最后一个索引。在substr
中,参数是第一个索引和长度。