昨天我问了哪些问题已得到正确回答。现在我想花更多的时间来理解昨天回答的那个功能。在该函数循环中,在'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]));
这里是fiddle
答案 0 :(得分:2)
在给定的代码中,当调用函数时,if条件检查传递的值中的每个字符串,当变量是数字时,执行以下代码
if (str[i] >= '0' && str[i] <= '9')
num = num * 10 + parseInt(str[i]);
所以在给定的字符串中,第一个数字是7
。由于num
的值最初为零,因此num的值为
num=( 0 *10) + 7
所以num=7
出现在数字的第一个出现位置。在第二次出现时,ie 8
num的值为
num=(7*10)+8
因此值为78
答案 1 :(得分: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
答案 2 :(得分: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