JavaScript:Number()的预期行为

我正在从文件中读取string整数,并将它们传递给函数。 由于大多数文件都有拖尾行,所以我想知道Number()的行为。

要从RHEL内核文件获取max_pidvariables,我正在使用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

看到这个问题的更多信息。