切片链接JavaScript

时间:2014-06-16 22:44:05

标签: javascript chaining

在发布答案时遇到了这个问题,并没有弄清楚为什么会这样。

以下是代码:

var s = "aaaaaX..";

var a = s.slice(1);
    a = a.slice( 0, a.lastIndexOf("X") );    

var b = s.slice(1).slice( 0, s.lastIndexOf("X") );    

var c = s.slice(1).slice( 0, s.lastIndexOf("X") - 1);

console.log(c);

为什么a不等于b? 为什么必须添加-1以便c == a

演示:http://jsfiddle.net/mb974/

1 个答案:

答案 0 :(得分:2)

那是因为你从s删除了一个第一个字符并将其分配给a变量。因此,索引比字符串中的索引低1,而您没有删除第一个字符。

以下示例将起作用:

var a = s.slice(1);
    a = a.slice( 0, s.lastIndexOf("X") );    

var b = s.slice(1).slice( 0, s.lastIndexOf("X") ); 

// a == b