この本のセクション 2.8.4 では、次の例に示すように、String クラスの subString() メソッドとスライス() メソッドについて説明しています。
alert(strObj) .slice(3)); // 出力結果: "ol world"
alert(strObj.subString(3)); // 出力結果: "ol world"
alert(strObj.slice(3, 7) )); // 出力結果: "low"
alert(strObj.subString(3,7)); // 出力結果: "low"
上記のコードの出力、slice() メソッドと subString() メソッドの呼び出しメソッドおよび出力結果はまったく同じです。どちらのメソッドも処理対象の文字列の部分文字列を返し、どちらも 1 つまたは 2 つのパラメータを受け入れます。取得する部分文字列。2 番目のパラメータは部分文字列の終了位置を取得します。2 番目のパラメータを省略した場合、終了位置はデフォルトで文字列の長さになり、どちらのメソッドも値を変更しません。 String オブジェクト自体。
まったく同じ機能を持つメソッドが 2 つあるのはなぜですか?実際、2 つのメソッドはまったく同じではありませんが、パラメーターが負の場合にのみ、パラメーターの処理方法が若干異なります。
負のパラメータの場合、slice() メソッドは文字列の長さをパラメータに追加し、subString() メソッドはそれを 0 として扱います。例:
alert(strObj); .slice(-3)); // 出力結果: "rld"
alert(strObj.subString(-3)); // 出力結果: "hello world"
alert(strObj.slice(3, -4)); // 出力結果: "low w"
alert(strObj.subString(3,-4)) // 出力結果: "hel"
このように、アプローチの主な違いは、slice() と subString() であることがわかります。パラメータ -3 のみの場合、slice() は「rld」を返し、subString() は「hello world」を返します。これは、文字列「hello world」の場合、slice(-3) はslice(8) に変換され、subString(-3) は subString(0) に変換されるためです。同様に、3 を使用する場合と -4 を使用する場合の違いも明らかです。前の例と同様に、slice() メソッドはスライス(3,7) に変換され、「low」を返します。 subString() メソッドは、これら 2 つのパラメーターを subString(0,3) として解釈します。これは実際には subString(0,3) です。これは、subString() が常に小さいパラメーターを開始位置として使用し、大きいパラメーターを開始位置として使用するためです。最後の桁。