我正在浏览一些示例代码,用于循环浏览Chrome App API中的目录,并且我遇到了一个我以前从未见过的语句,并且不知道要搜索什么。
function recurseDirectory(dirEntry, callback) {
var dirsLeft = 1;
var rootEntries;
let helper = (dirEntry, isRoot) => {
dirEntry.createReader().readEntries(entries => {
dirsLeft--;
if (isRoot) {
rootEntries = entries;
}
//This line is what I'm confused about
(dirEntry.entries = entries).forEach(entry => {
if (entry.isDirectory) {
dirsLeft++;
helper(entry);
}
});
if (!dirsLeft) {
callback(rootEntries);
}
});
}
helper(dirEntry, true);
}
我无法运行此代码,因为它只是一个片段,所以我仍在解剖它。
我不知道的部分是(dirEntry.entries = entries).forEach {...}
。我试着查找assignment foreach
,equal foreach
,但没有结果。
这个操作/语法叫什么,它做了什么?
它只是一个普通的变量赋值 - 但是,将它放在括号中意味着你将dirEntry.entries
赋值为entries
,并使用相同的语句迭代entries
- 它只是简写:
dirEntry.entries = entries;
entries.forEach(entry => {...});
除了分配表达式之外,这不是别的。 (dirEntry.entries = entries)
将返回entries
的值,forEach
将被应用,dirEntry.entries
也将返回entires
。它在一条线上做事。
data.entires
的值更改为entires
entires
的forEach
。它只是一个赋值和forEach
在数组上的立即执行,现在由entries
和dirEntry.entries
引用。
这只是一个懒惰的家伙试图保存自己夫妻按键。它等同于
dirEntry.entries = entries;
entries.forEach(...)