javascript运算符优先级题目

作者:沙师弟时间:2012-07-02
请写出下面语句的怎样的执行顺序?
a&&b?c:d||e&&f?g:h;
其实这种题目考的就是javascript的运算符优先级的基础,如果对于优先级的概念不明确,这种题目一靠就倒。虽然说这样的写法很蛋疼,维护起来也不好维护,但是不乏有他的优点存在。 从javascript运算符优先级来看,&&和||的优先级高于?:,所以这道题的答案是:
if(a && b) {
    c
} else { 
    if( d || (e&&f)) {
        g
    } else { 
        h
    }
}
来复习一下javascript的优先级:
运算符 描述
. [] () 字段访问、数组下标、函数调用以及表达式分组
++ — – ~ ! delete new typeof void 一元运算符、返回数据类型、对象创建、未定义值
* / % 乘法、除法、取模
+ – + 加法、减法、字符串连接
<< >> >>> 移位
< <= > >= instanceof 小于、小于等于、大于、大于等于、instanceof
== != === !== 等于、不等于、严格相等、非严格相等
& 按位与
^ 按位异或
| 按位或
&& 逻辑与
|| 逻辑或
?: 条件
= oP= 赋值、运算赋值
, 多重求值