2 angletinghai Angletinghai 于 2016.02.01 15:27 提问

关于一个网页中JavaScript部分的变量定义问题
 <script language="javascript" type="text/javascript">
        var _dyweq = _dyweq || [];
            第二句是什么意思?初学,不懂,请各位高手多多指教

4个回答

u013469474
u013469474   2016.02.01 15:56

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

showbo
showbo   Ds   Rxr 2016.02.01 15:54

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


 <script>var a=1</script>
<script>
    var a = a || 2
    alert(a)//1
</script>
qq_27093465
qq_27093465 什么叫防止覆盖,难道不是为预防undefined或者null嘛,西特。
接近 2 年之前 回复
fk002008
fk002008   2016.02.01 15:32

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

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

qq_19891827
qq_19891827   2016.02.01 16:22

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!