JavaScript:Number()的预期行为
我正在从文件中读取string整数,并将它们传递给函数。 由于大多数文件都有拖尾行,所以我想知道Number()
的行为。
要从RHEL内核文件获取max_pid
variables,我正在使用asynchronous读取。
var options = { encoding: 'utf8' }; fs.readFile('/proc/sys/kernel/pid_max', options, function (err, data) { var max_pid = Number(data); // or trim the string first var max_pid = Number(data.trim()); });
我的系统的variablesdata
返回string'32768\n'
,并使用该string上的Number()
剥离换行。 这是Number()
的预期行为,还是应该在将variables传递给Number()
之前对variables使用str.trim()
Number()
?
我问这个问题的原因是环境的一致性,以及正确使用function。
根据ECMAScript规范的第9.3.1节,将string转换为数字将自动去除前导空白和尾随空白。 如果JavaScript引擎不符合这部分规范,我会感到震惊的。 调用trim()
是不必要的(但是无害的)。
空格会自动从string的开头和结尾进行裁剪。 它不会从数字中间删除空格,例如"12 345"
(计算为NaN
)。 如果有任何非数字字符,您将收到NaN
。
看到这个问题的更多信息。