JavaScript增量运算符不工作

JavaScript Increment Operator isn't working?

本文关键字:工作 运算符 JavaScript      更新时间:2023-09-26

所以由于某种原因,当我在这段代码中使用自增运算符时,它不起作用。我已经验证了我的变量是数字。不知道怎么回事

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++是后缀自增运算符—正如您所看到的,它的描述是"返回oldValue"。

  • ++num是前缀递增操作符-正如您所看到的,它的描述是"返回newValue"。

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


因为你以后根本不改变nl,你可以这样写:

    start = nl + 1;

这个更清楚