0

昨日私は正しく答えられた質問をしました。昨日答えたその関数を理解するためにもっと時間を費やしたいと思います。その関数ループでは、「num」変数に値「7」を追加しています。「num」にどのように値を追加するかを知りたいです。

var Arr = [ 'h78em', 'w145px', 'w13px' ]

function stringToNum(str){
  num = 0;
  for (i = 0; i < str.length; i++) 
    if (str[i] >= '0' && str[i] <= '9') 
      num = num * 10 + parseInt(str[i]);
  return num;
}

alert(stringToNum(Arr[0]));
​

ここにフィドルがあります

4

3 に答える 3

2

指定されたコードでは、関数が呼び出されると、if条件が渡された値の各文字列をチェックし、変数が数値の場合、次のコードが実行されます。

   if (str[i] >= '0' && str[i] <= '9') 
      num = num * 10 + parseInt(str[i]);

したがって、指定された文字列では、最初に発生する数字はです7。の値numは最初はゼロなので、numの値は次のようになります。

 num=( 0 *10) + 7

そのためnum=7、番号の最初の出現で。数の2番目の出現で、ie 8

numの値は次のようになります。

  num=(7*10)+8

したがって、値は78

于 2012-08-31T06:24:28.160 に答える
1

1回の反復:num = 0; // h

2回の反復:num = 0 * 10 + 7; // 7

3回の反復:num = 7 * 10 + 8; // 8

4回の反復:num = 78; // e

5回の反復:num = 78; // m

于 2012-08-31T06:26:34.700 に答える
1

以下の関数ははるかに単純になります。

function stringToNum(str) {
  return +str.replace(/\D/g, '');
}

アップデート:

あなたのコードで:

init : num = 0
met 7: num = 0 * 10 + 7 -> num = 7
met 8: num = 7 * 10 + 8 -> num = 78
于 2012-08-31T06:17:17.117 に答える