Number()的预期行为



我目前正在从文件中读取字符串整数并将它们传递给函数。由于大多数文件都有尾随换行,所以我想知道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返回字符串'32768n',并且在该字符串上使用Number()会去掉换行符。这是Number()的预期行为,还是我应该在将变量传递给Number()之前使用str.trim() ?

我这样做是为了在不同环境中保持一致性,以及正确使用函数。

根据ECMAScript规范的第9.3.1节,将字符串转换为数字将自动去掉前后的空白。如果有一个JavaScript引擎不符合规范的这一部分,我会感到震惊。调用trim()是不必要的(但无害的)。

从字符串的开始和结束处自动清除空白。它不会从数字中间删除空格,例如,"12 345"(计算结果为NaN)。如果有任何非数字字符,您将收到NaN

相关内容

最新更新