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会自动执行上一点中所提到的类型转化。

     

    现在大家明白了吗?

  • 相关阅读:
    [书目20130415]改变:28天让自己内心强大
    [引]软件著作权登记申请所需文件
    [转]动软代码生成器之模板功能介绍
    [转]C# 冒泡排序你还会吗?
    [转]细说ASP.NET Forms身份认证
    [转]listview加载性能优化ViewHolder
    [转]App for Android (2) —— Python篇
    [转]sqlserver 创建分区表
    [转]c# 四舍五入、上取整、下取整
    常用 Java 静态代码分析工具的分析与比较
  • 原文地址:https://www.cnblogs.com/zsw-1993/p/4879819.html
Copyright © 2011-2022 走看看