【问题标题】:Assignment operator inside condition条件内的赋值运算符
【发布时间】:2015-06-06 16:45:41
【问题描述】:

我在学习 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 中的每条语句都会返回一个值,正因为如此,这段代码才有效。我想不通的是如何在不使用条件内的赋值的情况下复制该代码。

【问题讨论】:

    标签: javascript conditional assignment-operator


    【解决方案1】:

    赋值后测试值可以做一个等价循环:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-09
      • 2011-09-18
      • 2011-03-11
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      • 2010-11-21
      • 2018-07-04
      相关资源
      最近更新 更多