Javascript 字符串到数字的混淆
为什么Javascript 字符串到数字的混淆,javascript,jquery,parseint,Javascript,Jquery,Parseint,为什么parseInt(“-1000-500-75-33”)返回-1000 它不应该返回这些数字的总和:-1608 如何获取字符串“-1000-500-75-33”作为这些数字的总和返回?parseInt将尝试获取从字符串开头开始的数字 由于-是数字开头的有效字符,因此它会解析字符串,直到发现无效内容为止。第二个-无效,因为整数中不能包含-,只能包含数字。因此,它停在那里,并认为该数字已“完成” 现在,如果要处理表达式,可以像这样使用eval: eval("-1000-500-75-33")
parseInt(“-1000-500-75-33”)
返回-1000
它不应该返回这些数字的总和:-1608
如何获取字符串
“-1000-500-75-33”
作为这些数字的总和返回?parseInt
将尝试获取从字符串开头开始的数字
由于-
是数字开头的有效字符,因此它会解析字符串,直到发现无效内容为止。第二个-
无效,因为整数中不能包含-
,只能包含数字。因此,它停在那里,并认为该数字已“完成”
现在,如果要处理表达式,可以像这样使用
eval
:
eval("-1000-500-75-33")
这将按预期返回
-1608
。parseInt
将尝试获取从字符串开头开始的数字
由于-
是数字开头的有效字符,因此它会解析字符串,直到发现无效内容为止。第二个-
无效,因为整数中不能包含-
,只能包含数字。因此,它停在那里,并认为该数字已“完成”
现在,如果要处理表达式,可以像这样使用
eval
:
eval("-1000-500-75-33")
这将按预期返回
-1608
。因为它们在一个字符串中,ParseInt不解析整个字符串,只从开始处查找第一个适用的数字并返回它。如果无法解析字符串的开头,则返回NaN
parseInt("-1000NOT_NUMBER") = -1000
parseInt("test-1000`) = NaN
您必须使用eval
函数来执行所需操作,该函数将对给定字符串进行求值,就像它是输入控制台的命令一样
eval("-1000-500-75-33") = -1608
因为它们在一个字符串中,所以ParseInt不会解析整个字符串,而是从开始处查找第一个适用的数字并返回它。如果无法解析字符串的开头,则返回
NaN
parseInt("-1000NOT_NUMBER") = -1000
parseInt("test-1000`) = NaN
您必须使用eval
函数来执行所需操作,该函数将对给定字符串进行求值,就像它是输入控制台的命令一样
eval("-1000-500-75-33") = -1608
设法
eval(“-1000-500-75-33”)。toString()
尝试
eval(“-1000-500-75-33”).toString()
关于类型转换:在解析-1000(显然是“负1000”)之后,一旦它检测到数字和字符串之间的公共符号,它就会退出转换。因此parseInt
将“-1000-500-75-33”
视为“-1000NotConvertableString”
,因此保留了剩余部分,作为类型转换的结果返回-1000
关于类型转换:在解析-1000(显然是“负1000”)之后,一旦它检测到数字和字符串之间的公共符号,它就会退出转换。因此
parseInt
将“-1000-500-75-33”
视为“-1000NotConvertableString”
,因此将剩余部分保留,作为类型转换的结果返回-1000
。parseInt
不会执行任何计算,而是尝试将字符串转换为整数。它返回-1000
,因为后面的破折号将被视为无效数字。如果要对所有这些数字求和,可以在破折号上拆分,映射到数字,然后减少:
var numString = "-1000-500-75-33";
numString.split('-').map(e => Number(e)).reduce((a, b) => a - b);
parseInt
不会执行任何计算,而是尝试将字符串转换为整数。它返回-1000
,因为后面的破折号将被视为无效数字。如果要对所有这些数字求和,可以在破折号上拆分,映射到数字,然后减少:
var numString = "-1000-500-75-33";
numString.split('-').map(e => Number(e)).reduce((a, b) => a - b);
eval(“-1000-500-75-33”).toString()
?@Hodrobond有效,谢谢!如果你把它作为一个答案,我会给你道具eval(“-1000-500-75-33”)。toString()
?@Hodrobond有效,谢谢!如果你把它作为一个答案,我会给你道具