javascript执行顺序

时间:2010-01-19 06:24:48

标签: javascript

var c = false;
if(c=[] && c.length==0)alert('hi');

hi没有被警告,因为当它执行&&的第二个操作数时c仍然是假的,有人可以解释如果执行条件中的布尔操作数以及按什么顺序执行?

1 个答案:

答案 0 :(得分:3)

我认为这只是一个优先问题 - &&的约束力比=更严格。您的代码相当于:

if (c = ([] && c.length == 0))
{
    alert('hi');
}

所以它分配cfalse而不是空数组。

请改为尝试:

if ((c = []) && c.length == 0)
{
    alert('hi');
}

编辑:为了解决Tryptich的评论 - 我在发布之前尝试过这个:)正如CMS所说,一个空数组被认为是真的。试试这个:

if (c = [])
{
    alert('empty array is true');
}

甚至只是这个:

if ([])
{
    alert('empty array is true');
}

我在发布之前检查了规范 - 我有点惊讶的是,一个空数组被认为是真的,但它是......