JavaScript增量运算符不起作用?

时间:2014-03-27 15:31:29

标签: 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)) {
    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));
});

谢谢!

1 个答案:

答案 0 :(得分:4)

您正在寻找++nl而不是nl++num++会增加数字并返回旧值

顺便说一下,许多其他语言也是如此。


由于您以后根本没有更改nl,因此可以将其写为:

    start = nl + 1;

哪个更清楚。