file [i] === 10是什么意思?

时间:2014-08-27 20:11:48

标签: javascript node.js

我一直试图理解这段代码。我理解它在功能上的作用,但我无法理解技术部分。

下面的代码获取一个文件作为输入,读取它并在屏幕上显示行作为缓冲区

var fs = require('fs')
var file = fs.readFileSync(process.argv[2])
var offset = 0
for (var i = 0; i < file.length; i++) {
  if (file[i] === 10) {
    console.log(file.slice(offset, i))
    i++
    offset = i
  }
}
console.log(file.slice(offset, i))

从我所看到的是&#34;文件[i] === 10&#34;在每个新行拆分缓冲区,但我不明白在这种情况下数字10的含义。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

来自fs.readFileSync(filename, [options]) docs

  

如果指定了encoding选项,则此函数返回一个字符串。否则它返回一个缓冲区。

此处未显示encoding选项,因此它返回缓冲区。

来自Buffer docs

  

<强> buf[index]

     

在索引处获取并设置octet。这些值指的是单个字节,因此合法范围介于0x000xFF十六进制或0255之间。

因此,file[i]读取文件的i th 字节。 file[i] == 10检查文件的i th 字节是否为值10

ASCII中,值10对应于换行符中使用的LF换行符;这个逻辑可能是为了检查文件中的换行符,并在读取整行后输出。

答案 1 :(得分:1)

javascript中的===运算符表示:等值和等号

所以f [i]的值必须是10,而正好是数字10,表示ascii中的字符LF。