【发布时间】:2012-10-12 07:33:55
【问题描述】:
我不想每次都使用parseInt('08', 10) 将每个字符串转换为整数,
我们可以修改parseInt 方法,这样我就可以只使用parseInt('08') 而不是parseInt('08', 10)。?
【问题讨论】:
标签: javascript parseint
我不想每次都使用parseInt('08', 10) 将每个字符串转换为整数,
我们可以修改parseInt 方法,这样我就可以只使用parseInt('08') 而不是parseInt('08', 10)。?
【问题讨论】:
标签: javascript parseint
您可以像这样定义自己的函数,而不是修改内置函数parseInt:
function prseInt(n)
{
return parseInt(n, 10);
}
并将您在应用中使用的所有parseInt(n, 10) 替换为prseInt(n)。
var origParseInt = parseInt;
parseInt = function(n) {
return origParseInt(n, 10);
}
而且它有效!
【讨论】:
prseInt 更正为 parseInt
在你的字符串前面简单地使用+ 操作符来执行类型强制(并且不需要调用parseInt())
var str = "08";
var num = +str;
console.log(num, typeof num); // 8, number
【讨论】:
parseInt(xx)(即,没有 radix 参数)在 99% 的情况下都可以正常工作,它会尝试猜测您所追求的基数。
对于像 8 这样的单个数字,它会正确猜测 basse10 并给你整数 8。问题是像 08 这样的字符串,它会猜测你想要的是八进制,并转换 "08" to octal returns zero。
您应该始终在使用parseInt 时提供基数参数。
【讨论】:
parseInt(value) - 只要您了解行为。如果value 的前缀是0,它会将其转换为八进制。不,你不能修改内置方法,否则它不会是“内置的”。