1つの答えで結構ですが、少し読んでおく必要があります。特に新しい用語「停止」を使用します。
私の囲碁-上記のダニエルによる最初の回答に加えて、それを有用にするために違いによって整理されています:
1)負のインデックス。サブストリングは正のインデックスを必要とし、負のインデックスを0に設定します。スライスの負のインデックスは、文字列の末尾からの位置を意味します。
"1234".substring(-2, -1) == "1234".substring(0,0) == ""
"1234".slice(-2, -1) == "1234".slice(2, 3) == "3"
2)インデックスの交換。サブストリングは、インデックスを並べ替えて、最初のインデックスを2番目のインデックス以下にします。
"1234".substring(3,2) == "1234".substring(2,3) == "3"
"1234".slice(3,2) == ""
--------------------------
一般的なコメント-2番目のインデックスがスライスまたは部分文字列の最後の文字の後の位置であることは奇妙だと思います。「1234」.slice(2,2)が「3」を返すことを期待します。これは、Andyの混乱を正当化します-「1234」.slice(2、-1)が「34」を返すことを期待します。はい、これは私がJavaScriptを初めて使用することを意味します。これは、次の動作も意味します。
"1234".slice(-2, -2) == "", "1234".slice(-2, -1) == "3", "1234".slice(-2, -0) == "" <-- you have to use length or omit the argument to get the 4.
"1234".slice(3, -2) == "", "1234".slice(3, -1) == "", "1234".slice(3, -0) == "" <-- same issue, but seems weirder.
私の2c。
slice
は、予期しない動作が最も少ないものです。