以下构造中的if(variable)
子句检查列表/数组是否为null / undefined,以避免异常:
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 || {})
次迭代,因为数组(方括号)会导致迭代并抛出异常。
答案 0 :(得分:3)
是的,null
,undefined
,0
,""
,当被视为布尔值({{1}时,将全部解析为false
所有浏览器都将使用后者。这种行为非常安全。
答案 1 :(得分:2)
是
我讨厌15个限制。