在Javascript中使用(1*x)将字符串整数转换为整数的任何缺点?

c69*_*c69 3 javascript integer casting

如果比较将变量类型转换为整数的不同显式方法:

var y = parseInt(x,10) + 'text'; //太长了,需要包装,需要反八角黑客

var y = x.toFixed(0) + 'text'; //仍然很长,甚至更丑,也许还有马车

var y = Math.floor(x) + 'text'; // long并使用Math对象

var y = Number(x) + 'text'; // 长

var y = +x + 'text'; //很短,但太hacky

var y = 1 * x + 'text'; //简单而简短

你会看到,为什么最后一个是我最喜欢的.然而,我想知道,如果这种方法有任何隐藏的问题?

Joe*_*Joe 5

最后一个确实有效:

1 * 0.5; // 0.5
Run Code Online (Sandbox Code Playgroud)

如果你想要最好的readiblilty使用parseInt.基数不是黑客!

编辑:

我的最爱:

var y = x|0 + 'text';
Run Code Online (Sandbox Code Playgroud)


编辑:请注意,此"技巧"仅适用于32位有符号整数.因为这是JavaScript的实现,它的位逻辑.因此,您可以使用的最大正数是2147483647.

有一个无符号位操作,无符号右移. 0 >>> 1