Я не хочу использовать каждый раз parseInt('08', 10)
для преобразования каждой строки в целое число,
Можем ли мы изменить метод parseInt
, чтобы я мог использовать только parseInt('08')
вместо parseInt('08', 10)
.?
Я не хочу использовать каждый раз parseInt('08', 10)
для преобразования каждой строки в целое число,
Можем ли мы изменить метод parseInt
, чтобы я мог использовать только parseInt('08')
вместо parseInt('08', 10)
.?
Вместо изменения встроенной функции 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
.
- person Jamiec; 12.10.2012
Используйте просто оператор +
перед вашей строкой, чтобы выполнить приведение типа (и не нужно вызывать parseInt()
)
var str = "08";
var num = +str;
console.log(num, typeof num); // 8, number
parseInt(xx)
(то есть без параметра radix) будет работать отлично в 99% случаев, он будет пытаться угадать, какая база вам нужна.
Для одного числа, такого как 8
, он правильно угадает basse10 и даст вам целое число 8. Проблема заключается в строке типа 08
, он угадает, что вы хотите, восьмеричное, и преобразует " 08 "в восьмеричном формате возвращает ноль.
Вы должны ВСЕГДА указывать параметр radix при использовании parseInt
.
parseInt(value)
, как я объяснил, если вы понимаете его поведение. Если value
когда-либо будет иметь префикс 0
, он преобразует его в восьмеричный. И нет, вы не можете изменить встроенный метод, иначе он не был бы встроенным.
- person Jamiec; 12.10.2012