文字列の先頭から最後まで文字を1つずつ抽出するとき、誰かがこのように書くことがよくあります。
たとえば、
function rev1(str, i, ret) {
for (i = 1; i <= length(str); i++) {
ret = substr(str, i, 1) ret;
}
return ret;
}
length() を使う必要はないと思います。
function rev2(str, ch, i, ret) {
while (ch = substr(str, ++i, 1)) {
ret = ch ret;
}
return ret;
}
うまくいきますが、間違っていますか?
ベストアンサー1
間違っているわけではありませんが(入力が実際に配列ではなく文字列であると仮定している場合)、substr()は文字列を返すため、文字列比較を実行する条件に依存するため、結果コードはあまり明確ではありません。一見すると、文字列にaが含まれていると失敗することがわかりましたが、0
強制的に文字列比較をするので失敗しません。