我正在从文件中读取字符串整数并将它们传递给函数。由于大多数文件都有尾随换行符,因此我想知道Number()
的行为。
要从RHEL内核文件中获取max_pid
变量,我正在使用异步读取。
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());
});
我系统的变量data
返回了字符串'32768\n'
,并在该字符串上使用Number()
删除换行符。这是Number()
的预期行为,还是应该在将变量传递给str.trim()
之前对变量使用Number()
?
我问这是出于各种环境的一致性以及正确使用功能的原因。
答案 0 :(得分:3)
根据ECMAScript specification的第9.3.1节,将字符串转换为数字将自动剥离前导和尾随空格。如果有一个JavaScript引擎不符合规范的这一部分,我会感到震惊。对trim()
的调用是不必要的(但无害)。
答案 1 :(得分:1)
从字符串的开头和结尾自动修剪空格。它不会从数字的中间删除空格,例如"12 345"
(评估为NaN
)。如果有任何非数字字符,您将收到NaN
。
有关详细信息,请参阅this question。