1

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

4

2 回答 2

3

是的,null, undefined, 0, "", 都将解析为false, 当被视为布尔值时(||操作员会这样做),因此,所有浏览器都将使用后者。这种行为是完全安全的。

于 2009-12-10T08:56:38.527 回答
2

是的

我讨厌 15 个字符的限制。

于 2009-12-10T08:57:18.753 回答