Javascript:在未定义/空迭代器上捕获 for 循环的最佳方法?

rob*_*ert 3 javascript for-loop if-statement ecmascript-6

考虑下一个例子。是否有不需要这个 if 语句较短版本

let d = null  
if (d) { 
  for ( const z of d ) { 
   //
  } 
} 
Run Code Online (Sandbox Code Playgroud)

例如,可能是这样的:

let d = null  
for ( d && const z of d ) { 
 //
} 
Run Code Online (Sandbox Code Playgroud)

Cer*_*nce 5

我更喜欢带有显式if检查的第一个版本,但是如果您想稍微降低一下,则可以使用d || [],以便如果d为 false,则不执行迭代并且不抛出错误,尽管这会创建一个不必要的中间数组:

const d = null  
for (const z of d || []) { 
  console.log(z);
}


const e = ['foo'];
for (const z of e || []) { 
  console.log(z);
}
Run Code Online (Sandbox Code Playgroud)