分配操作员内部情况

时间:2015-04-01 21:11:41

标签: javascript conditional assignment-operator

我在学习node.js流时发现了这段代码:

var fs = require('fs');
var readableStream = fs.createReadStream('file.txt');
var data = '';
var chunk;

readableStream.on('readable', function() {
    while ((chunk=readableStream.read()) != null) {
        data += chunk;
    }
});

readableStream.on('end', function() {
    console.log(data)
});

在while条件中,有((chunk=readableStream.read()) != null)。我理解JavaScript中的每个语句都返回一个值,因此,这段代码可以正常工作。我无法弄清楚的是如何在不使用条件内的赋值的情况下复制该代码。

1 个答案:

答案 0 :(得分:0)

可以通过在分配后测试值来进行等效循环:

while (true) {
    chunk = readableStream.read();
    if (chunk == null) {
        break;
    }
    data += chunk;
}

或者您可以在循环之前和循环内重复赋值:

chunk = readableStream.read();
while (chunk != null) {
    data += chunk;
    chunk  = readableStream.read();
}