Angletinghai
angletinghai
采纳率0%
2016-02-01 07:27 浏览 1.3k

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

 <script language="javascript" type="text/javascript">
        var _dyweq = _dyweq || [];
            第二句是什么意思?初学,不懂,请各位高手多多指教
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答 默认 最新

  • u013469474 B_Frank 2016-02-01 07:56

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

    点赞 2 评论 复制链接分享
  • showbo GoCityPass新加坡曼谷通票 2016-02-01 07:54

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

    
     <script>var a=1</script>
    <script>
        var a = a || 2
        alert(a)//1
    </script>
    
    点赞 1 评论 复制链接分享
  • fk002008 lambda-fk 2016-02-01 07:32

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

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

    点赞 评论 复制链接分享
  • qq_19891827 qq_19891827 2016-02-01 08:22

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

    点赞 评论 复制链接分享

相关推荐