1
MrFireAwayH OP 手机码字……格式不好看😪
|
2
zythum 2017-06-20 19:21:50 +08:00 1
所有通过位运算的(不管是~, >>, |)方式转的都会遇到整型上限的问题。所以在不知道数组到底多大的情况下谨慎使用,所以尽量用 parseInt。但是如果你自己情况,那就无所谓了。
|
3
v1024 2017-06-20 19:40:18 +08:00 via iPhone
楼主也是波澜哥的粉丝吗
|
4
zhuangtongfa 2017-06-20 20:04:35 +08:00
用 Number 最保险
|
5
noe132 2017-06-20 20:58:33 +08:00 1
参考:
http://ecma-international.org/ecma-262/7.0/index.html#sec-abstract-equality-comparison http://ecma-international.org/ecma-262/7.0/index.html#sec-tonumber http://ecma-international.org/ecma-262/7.0/index.html#sec-parseint-string-radix http://ecma-international.org/ecma-262/7.0/index.html#sec-number-constructor-number-value Number("123") 与 ~~"123" === 123 内部处理基本一致,都是调用 ToNumber(value)。因为有两次取反,可能会有取反的坑。 ToNumber 对于字符串类型的参数,就是按照 js 数值语法的字面量来处理字符串,所有合法的 javascript 数值字面量字符串会被转化为相应的值。所以 Number("1.1") === 1.1。若遇到不合法的返回 NaN 而 parseInt 有第二个参数为进制,默认为 10,取值范围为 2-36。 parseInt 的处理方法是将字符串前缀中提取 0-9a-z 的字符,然后一位一位的计算根据进制转化为数值 例如 "1a.54Q"以 10 为基,有效字符为 0-9,提取出来的有效字符串为"1",得到的值就是 1 "1a.54Q"以 16 为基有效字符为 0-9a-f,提取出来的有效字符串为"1a",得到的值就是 26 |
6
noe132 2017-06-20 21:11:49 +08:00 1
你上面给的方法 A 相当于一个用 JS 实现的的 parseInt,逻辑和 parseInt 基本一致
|
7
0915240 2017-06-20 22:08:51 +08:00 1
~~这种黑科技有整数上线问题 21 亿
慎用,用时需注意。 |
8
MrFireAwayH OP 谢谢各位!👍😳
|
9
MrFireAwayH OP @v1024 😂对啊……波澜~
|