Will(变量或{})在Javascript中使用crossbrowser吗?

时间:2009-12-10 08:54:33

标签: javascript cross-browser binary-operators

以下构造中的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 || {})次迭代,因为数组(方括号)会导致迭代并抛出异常。

2 个答案:

答案 0 :(得分:3)

是的,nullundefined0"",当被视为布尔值({{1}时,将全部解析为false所有浏览器都将使用后者。这种行为非常安全。

答案 1 :(得分:2)

我讨厌15个限制。