首先 - 我的描述;)
我从服务器获得了一个XmlHttpRequests JSON响应.MySQL驱动程序将所有数据输出为字符串,PHP按原样返回,因此任何整数都以字符串形式返回,因此:
JS中的parseInt()函数是否有任何快速替代(hack)可以解析纯数字字符串,例如
var foo = {"bar": "123"}; ... foo.bar = parseInt(foo.bar); // (int) 123
Aistina.. 38
要转换为整数,只需使用一元+运算符,它应该是最快的方法:
var int = +string;
转换为其他类型可以以类似的方式完成:
var string = otherType + ""; var bool = !!anything;
更多信息.
要转换为整数,只需使用一元+运算符,它应该是最快的方法:
var int = +string;
转换为其他类型可以以类似的方式完成:
var string = otherType + ""; var bool = !!anything;
更多信息.
在JavaScript类型转换是通过内置类型的构造函数完成无new
,即
foo.bar = Number(foo.bar);
这parseInt()
在几个方面有所不同:
前导零不会触发八进制模式
浮点值也将被解析
解析整个字符串,即如果它包含其他非数字字符,则返回值为 NaN
首先,您是否真的记录它很慢并且导致问题?否则,我不会费心寻找解决方案,因为确实没有问题.
其次,我猜想由于parseInt是一个原生的JS方法,它将以非常快的方式实现,并且可能以VM的本机语言(可能是C,取决于浏览器/ VM)实现.我认为用纯JS制作更快的方法可能会遇到一些麻烦.=)
当然,我不是JS大师,所以我不确定,但这是我的直觉告诉我的,并且往往是"如何为libraryFunction()提供更快的替代方案的标准答案? " 的问题.
在json_encode()
它之前将它转换为PHP中的int :
$foo->bar = (int)$foo->bar; print('var foo = ' . json_encode($foo));
顺便说一下,当使用parseInt时,最好总是指定第二个参数,除非你真的希望字符串从0开始被解释为八进制,依此类推:
parseInt('010', 10); // 10