关于一个网页中JavaScript部分的变量定义问题

 <script language="javascript" type="text/javascript">
        var _dyweq = _dyweq || [];
            第二句是什么意思?初学,不懂,请各位高手多多指教

在js中空的值或者对象那是默认为false的
var _dyweq = _dyweq || [];

表示定义数组的时候,如果_dyweq不存在那就把数组定义成[]
是一种复合写法
等价于
if (_dyweq ==='undefined' || _dyweq == null)
_dyweq = [];

_dyweq如果没有定义过就用[]来代替,类似下面的这种代码,防止 _dyweq被覆盖


 <script>var a=1</script>
<script>
    var a = a || 2
    alert(a)//1
</script>

逻辑或在操作数不是布尔值的时候,不一定会返回布尔值,会遵循一下规则:
如果第一个操作数是对象,则返回第一个操作数;
如果第一个操作数的求值结果为false,则返回第二个操作数;
如果两个操作数都是对象,则返回第一个操作数;
如果两个操作数都是null,则返回null;
如果两个操作数都是NaN,则返回NaN;
如果两个操作数都是undefined,则返回undefined。
在 var _dyweq = _dyweq || [];中,会先判断_dyweq是否存在(不为undefined或null)。如果存在的话会遵循上述第一条规则,返回该操作数,
并且因为短路操作,此语句结束;如果不存在,则根据第二条规则,会返回第二个操作数。
所以一句话,该语句的意思就是如果_dyweq存在则将他赋值给新定义的变量,否则将空数组赋值给新定义的变量。

1.在js中变量未定义时默认值为undefined,undefined在逻辑运算中会转为false;
2.这是一个逻辑或的短路逻辑的一个应用,意思是按照优先级从左至右,优先选择执行从左侧开始第一个不为false的语句;
3.所以本句代码的实际含义是,如果该变量为定义,或值为null,则给变量赋值为空数组(‘【】’);