freewind-demos / products-crud-api

1 stars 1 forks source link

`content && JSON.parse(content)`是什么意思? #1

Open freewind opened 8 years ago

freewind commented 8 years ago

https://github.com/js-demos/products-crud-api/blob/master/product-store-file-system.js#L12

  fs.readFile(DATA_FILE, CHARSET, function (err, content) {
    callback(err, content && JSON.parse(content));
  });

这里的content && JSON.parse(content)是什么用法?

yangyueyy commented 8 years ago

有点像上次讲的这个:

stat && stat.isFile();

但是,什么用法~这个~

freewind commented 8 years ago
 callback(err, content && JSON.parse(content));

是下面这种写法的一个“不准确”的化简,主要好处是只写一行就行了:

if(err) {
    callback(err);
} else {
   callback(null, JSON.parse(content));
}

但是这种化简的做法跟下面的代码并不相等,它基于fs.readFile这个方法的一些约定:如果出错,则content为undefined;如果没错,则err为null且我们的DATA_FILE的content一定不为空。

这里仅仅是展示了这一种做法,并不具有通用性。我们会根据实际情况选择是否化简,或者使用后面那种完整的写法