如果您比较不同的显式类型方法-将变量转换为整数:
var y = parseInt(x,10) + 'text'; //太长,需要包装,需要防八进制攻击
var y = x.toFixed(0) + 'text'; //仍然很长,甚至更丑陋,甚至可能有buggy
var y = Math.floor(x) + 'text'; // long并使用数学对象
var y = Number(x) + 'text'; // long
var y = +x + 'text'; //非常简短,但太粗糙了
var y = 1 * x + 'text'; //简单而简短
你会明白,为什么最后一个是我的最爱。然而,我想知道,这种方法是否有任何隐藏的问题?
发布于 2011-10-29 04:01:34
最后一个是有效的:
1 * 0.5; // 0.5如果你想要最好的可靠性,使用parseInt。而且基数也不是hack!
编辑:
我的最爱:
var y = x|0 + 'text';
编辑:请注意,这个“技巧”只适用于32位有符号整数。因为这是JavaScript对其位逻辑的实现。所以你可以使用的最大正数是2147483647。
有一个无符号位运算,无符号右移位。0 >>> 1
发布于 2011-10-29 04:22:59
我认为,代码首先应该是正确的,然后尽可能多的其他人都能读懂,最后不要超过要求。在这种情况下,以下是我的偏好:
对于从字符串到整数的转换,我更倾向于:
parseInt(x, 10)因为我觉得代码说的就是你想要做的。如果你不喜欢这个额外的参数,你可以定义你自己的全局效用函数:
toInt(x) {return(parseInt(x, 10));}因此,您可以只使用:
toInt(x)当我只想把一个字符串转换成一个数字时,我更喜欢:
Number(x)因为我再次认为它是最明确和最具可读性的。
在其他示例中,如果x是字符串,并且Number(x)、+x和1*x不会转换为整数,则x.toFixed(0)不起作用。
https://stackoverflow.com/questions/7934249
复制相似问题