为什么 javascript 带有负数的 slice 方法似乎计数不同?

Why does javascript slice method with negative numbers seem to count differently?

我得到了第一片香蕉:

let str = "Apple, Banana, Kiwi";
document.getElementById("demo").innerHTML = str.slice(7,13);

现在这个让我很困惑,因为它是从零开始的,并将其显示为答案

let str = "Apple, Banana, Kiwi";
str.slice(-12, -6)    // Returns Banana

不确定为什么它不是 " "Banan - 引号表示 space 并且上面的 -6 包括最后一个字符,但它不应该像我这里的示例显示的那样,因为 javascript 状态切片方法不包括最后一个数字。希望你能帮我解惑??

如果 beginIndexendIndexnegative 那么它被视为

  • beginIndex = str.length + beginIndex
  • endIndex = str.length + endIndex

let str = "Apple, Banana, Kiwi";

const negativeStart = -12;
const negativeEnd = -6;

console.log(str.slice(negativeStart, negativeEnd)) // Returns Banana

const start = str.length + negativeStart;
const end = str.length + negativeEnd;
console.log(start);
console.log(end);
console.log(str.slice(start, end));