以下构造中的if(variable)
子句检查列表/数组是否为空/未定义,以避免异常:
if (list)
for (var k in list) {
...
if (array)
for (var i = array.length; i >= 0; i--) {
...
但是 JS 语法允许像这样的表达式
null || []
undefined || {}
所以我可以将代码缩短一行,并且仍然检查数组/对象:
for (var k in obj || {}) {
...
for (var i = (array || {}).length; i >= 0; i--) {
...
问题本质上是:null/undefined || []/{}
表达式是否在所有浏览器中都返回后者?
编辑:发现大括号更适合for (var k in list || {})
迭代,因为数组(方括号)会导致迭代并引发异常。