首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Javascript中使用( 1*x )将字符串整数转换为整数有什么缺点吗?

在Javascript中使用( 1*x )将字符串整数转换为整数有什么缺点吗?
EN

Stack Overflow用户
提问于 2011-10-29 03:59:40
回答 2查看 191关注 0票数 3

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

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'; //简单而简短

你会明白,为什么最后一个是我的最爱。然而,我想知道,这种方法是否有任何隐藏的问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-29 04:01:34

最后一个是有效的:

代码语言:javascript
复制
1 * 0.5; // 0.5

如果你想要最好的可靠性,使用parseInt。而且基数也不是hack!

编辑:

我的最爱:

代码语言:javascript
复制
var y = x|0 + 'text';

编辑:请注意,这个“技巧”只适用于32位有符号整数。因为这是JavaScript对其位逻辑的实现。所以你可以使用的最大正数是2147483647。

有一个无符号位运算,无符号右移位。0 >>> 1

票数 5
EN

Stack Overflow用户

发布于 2011-10-29 04:22:59

我认为,代码首先应该是正确的,然后尽可能多的其他人都能读懂,最后不要超过要求。在这种情况下,以下是我的偏好:

对于从字符串到整数的转换,我更倾向于:

代码语言:javascript
复制
parseInt(x, 10)

因为我觉得代码说的就是你想要做的。如果你不喜欢这个额外的参数,你可以定义你自己的全局效用函数:

代码语言:javascript
复制
toInt(x) {return(parseInt(x, 10));}

因此,您可以只使用:

代码语言:javascript
复制
toInt(x)

当我只想把一个字符串转换成一个数字时,我更喜欢:

代码语言:javascript
复制
Number(x)

因为我再次认为它是最明确和最具可读性的。

在其他示例中,如果x是字符串,并且Number(x)+x1*x不会转换为整数,则x.toFixed(0)不起作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7934249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档