Я смущен о конкретном результате parseInt
. Я думал, что я понял большинство своих причуд, но это неясно.parseInt («010», 10); против parseInt (010, 10);
parseInt("010", 10); // 10
parseInt(010, 10); // 8, but expecting 10
Во втором примере я указал правильный радиус. В чем причина неожиданного результата?
Решение
Проблема с восьмеричной буквальным. Когда число добавляется с 0, оно рассматривается как восьмеричный литерал.
При выполнении
console(010); // 8
в режиме без сценария, вы получите 8. Причина, по которой ParseInt оказывает то, что я думал, было странное поведение, потому что я был в основном исполнении
parseInt(8, 10); // 8
и ожидается 10.
ParseInt никогда не видел 010, только 8. Спасибо всем за помощь.
Используйте строгий режим. – rninty
Почему вы все равно хотите использовать parseInt в литерале Number? – bfavaretto
Это не практическое применение, но я не мог перестать удивляться. – AndrewJM