// 如果符号后面跟的不是数字,那么就是非法的,返回0 if (!isNumber(str[firstNumberIndex])) { return0 }
// 确定连续数字字符的起始边界 let endNumberIndex = firstNumberIndex while (endNumberIndex < length && isNumber(str[endNumberIndex + 1])) { ++endNumberIndex }
// 计算数字字符的代表的数字大小 // 并且判断是否越界 let result = 0 for (let i = firstNumberIndex; i <= endNumberIndex; ++i) { result = result * 10 + (str[i] - '0') if (positive && result > MAX_INT) { return MAX_INT } if (!positive && result > MIN_INT_ABS) { return -1 * MIN_INT_ABS } }
// 返回的时候注意符号 return positive ? result : -1 * result }