zoukankan      html  css  js  c++  java
  • 仔细看看Javascript中的逻辑与(&&)和逻辑或(||)

    学过Java和C的人,都知道逻辑与(&&)和逻辑或(||),他们都是短路运算符,也就是说,对于&&来说,只要左边的操作数是false,它就不会再去判断右边的操作数是true还是false了,因为这个时候已经知道整个表达式的值就是false了;同理对于||来说,只要左边的操作数是true,它也不会再去计算右边的操作数了。

     

    对于Java和C而言,&&和||的返回值不是true就是false,但是Javascript却不是这样的,如果你认为Javascript也是返回true或者false的话,请看下面的小例子:

    1. 先来看看逻辑与&&

    var a = false;

    var b = a && true; // b=false

    ----------------------------------

    var a = 0;

    var b = a && true; //b=0

    ----------------------------------

    var a = null;

    var b = a && true; //b=null

     

    2. 再来看逻辑或||

    var a = false;

    var b = a || true; // b=true

    ----------------------------------

    var a = 0;

    var b = a || 500; //b=500

    ----------------------------------

    var a = null;

    var b = a || "xyz"; //b="xyz"

     

    现在我们来解释一下为什么会是怎样的:

    1.  Javascript本身是弱类型的语言,也就是说一个变量的类型是不固定的,是在运行时,根据具体的变量值来决定的。

    2. Javascript中的Boolean值,有这样的类型转化规律:

        2.1 对于数字而言,除0和NaN可以被转成false,其他的数字可以被转成true;

        2.2 对于字符串而言,空字符串("")可以被转成false,非空的字符串都可以被转成true;

        2.3 对于对象而言,null的对象可以被转成false,非null的对象可以被转成true;

        2.4 对于null和undefined,都会被转成false。

    3. 在if等需要Boolean值的上下文时,Javascript会自动执行上一点中所提到的类型转化。

     

    现在大家明白了吗?

  • 相关阅读:
    16. 3Sum Closest
    17. Letter Combinations of a Phone Number
    20. Valid Parentheses
    77. Combinations
    80. Remove Duplicates from Sorted Array II
    82. Remove Duplicates from Sorted List II
    88. Merge Sorted Array
    257. Binary Tree Paths
    225. Implement Stack using Queues
    113. Path Sum II
  • 原文地址:https://www.cnblogs.com/zsw-1993/p/4879818.html
Copyright © 2011-2022 走看看