JavaScript增量运算符不工作
JavaScript Increment Operator isn't working?
所以由于某种原因,当我在这段代码中使用自增运算符时,它不起作用。我已经验证了我的变量是数字。不知道怎么回事
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;
这个更清楚
相关文章:
- ||(OR)运算符如何在赋值中工作
- Javascript:++运算符如何工作
- 布尔表达式-与AND、OR逻辑运算符混淆以及它们的工作方式
- JavaScript运算符+dons'工作不正常
- 无法在 IE 9 中传递此运算符的值,而它在 IE7 和 IE8 中工作正常
- 切换 !运算符不在页面加载 JavaScript 上工作
- 缺少参数 &&&||括号中的运算符,但仍在工作
- Javascript:逗号运算符,var,以及为什么它以这种方式工作
- RxJs 5 share() 运算符如何工作
- Null-Coalescing 运算符 (??) 在 Spider 中是如何工作的
- JavaScript - 为什么加法赋值运算符不能按预期工作
- JavaScipt的数据类型转换对于“==”运算符究竟是如何工作的
- 按位运算符在 2^31 后停止工作
- 后缀增量在JavaScript中遇到加法(+)运算符时是如何工作的
- Javascript中的逗号运算符是如何工作的
- 正则表达式中的(?!)运算符是如何工作的
- 比较运算符-大于或等于-不工作
- jQuery - not 运算符无法按预期工作
- 这些逻辑运算符是如何工作的
- 为什么“;new Date().toString()"给定Javascript运算符优先级的工作