4

将 String 变量的值转换为 int/numeric 变量的正确方法是什么?为什么bcInt仍然是字符串,为什么isNaN返回true

bc=localStorage.getItem('bc');
var bcInt=parseInt(bc,10);
var bcInt2=1;
console.log("bc------------>" +bc +" isNaN:" +isNaN(bc)); //isNaN returns true
console.log("bcInt------------>" +bcInt +" isNaN:" +isNaN(bcInt)); //isNaN returns true

bcInt2// isNaN returns false
4

2 回答 2

9

parseInt仅当您将数字作为第一个字符传递时才返回一个数字。

例子:

parseInt( 'a', 10 ); // NaN
parseInt( 'a10', 10 ); // NaN
parseInt( '10a', 10 ); // 10
parseInt( '', 10 ); // NaN
parseInt( '10', 10 ); // 10

+此外,如果您想获取只有数字的字符串,您可以查看运算符。

+'a'; // NaN
+'a10'; // NaN
+'10a'; // NaN
+''; // 0, that's tricky
+'10'; // 10

编辑:根据您的评论,我已经测试过parseInt

parseInt( '08-20 19:41:02.880', 10 ); // 8

你做错了其他事情。parseInt返回所有内容,直到它不是数字。如果第一个不是数字(或找不到任何数字),则返回NaN.

于 2012-08-20T15:41:29.427 回答
0

答案是我使用localStorage.setItem('bc',JSON.stringify(bc))它并添加了双引号,bc因为在这种情况下它已经是一个字符串,这就是为什么parseInt不起作用。值为""1""

于 2012-08-20T18:50:11.937 回答