Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 字符串到数字的混淆_Javascript_Jquery_Parseint - Fatal编程技术网

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有效,谢谢!如果你把它作为一个答案,我会给你道具