JavaScript增量运算符为';不行吗?

JavaScript增量运算符为';不行吗?,javascript,Javascript,因此,出于某种原因,当我在这段代码中使用增量运算符时,它不起作用。我已经验证了我的变量是数字。。不知道发生了什么事 var fs = require('fs') , bt = require('buffertools') var start = 0; fs.readFile(process.argv[2], function(err, data) { console.log(data); while (bt.indexOf(data, '\n', start)) { va

因此,出于某种原因,当我在这段代码中使用增量运算符时,它不起作用。我已经验证了我的变量是数字。。不知道发生了什么事

var fs = require('fs')
  , bt = require('buffertools')

var start = 0;

fs.readFile(process.argv[2], function(err, data) {
  console.log(data);
  while (bt.indexOf(data, '\n', start)) {
    var nl = bt.indexOf(data, '\n', start); // nl is 40
    console.log(start, nl); // 0, 40
    console.log(data.slice(start, nl)); // works great!

    start = nl++; // reset the offset past that last character..
    console.log(start, typeof start); // start == 40? the heck? 'number'
    process.exit(); // testing
    //console.log(nl, start); 40, 40
  }
});
编辑------

而解决方案

"use strict";

var fs = require('fs')
  , bt = require('buffertools');

fs.readFile(process.argv[2], function(err, data) {
  var offset = 0;

  while (true) {
    var nl = bt.indexOf(data, '\n', offset);
    if (nl === -1) break;
    console.log(data.slice(offset, nl));
    offset = ++nl;
  }

  console.log(data.slice(offset));
});

谢谢

您要查找的是
++nl
而不是
nl++
num++
递增数字并返回旧值

  • num++
    是-正如您所看到的,它的描述是“returnoldvalue”

  • ++num
    是-正如您所看到的,它的描述是“returnnewvalue”

顺便说一句,在许多其他语言中也是如此


由于您以后根本不会更改
nl
,因此可以这样编写:

    start = nl + 1;

哪个更清楚。

您要查找的是
++nl
而不是
nl++
num++
递增数字并返回旧值

  • num++
    是-正如您所看到的,它的描述是“returnoldvalue”

  • ++num
    是-正如您所看到的,它的描述是“returnnewvalue”

顺便说一句,在许多其他语言中也是如此


由于您以后根本不会更改
nl
,因此可以这样编写:

    start = nl + 1;

哪个更清楚。

nl++
。它所做的是递增
nl
并返回原始值。尝试
start=++nl
++nl
将递增
nl
并返回新值。
nl++
。它所做的是递增
nl
并返回原始值。尝试
start=++nl
++nl
将递增
nl
并返回新值。有趣。我以前从来没有遇到过,谢谢。将在12分钟内接受。很有趣。我以前从来没有遇到过,谢谢。将在12分钟内接受。