js中的逻辑运算符

      $(function() {
                if ("") {
                    console.info(" \"\" true");
                } else {
                    console.info(" \"\" false");
                }
                if (0) {
                    console.info(" 0 true");
                } else {
                    console.info(" 0 false");
                }
                if (undefined) {
                    console.info(" undefined true");
                } else {
                    console.info(" undefined false");
                }
                // if (a) {//ReferenceError: aa is not defined
                if ("a") {
                    console.info(" a true");
                } else {
                    console.info(" a false");
                }
                if (null) {
                    console.info(" null true");
                } else {
                    console.info(" null false");
                }
                console.info("time" || null);
                //time
                console.info("" || null);
                //null
                console.info(null || "");
                //空字符串
                var a;
                console.info(a);
                //undefined
                a = a || [];
                console.info(a);
                //[]
                /**
                 *
                 * undefined的含义其实是定义了一个引用,但是引用没有之上任何变量
                 * 例如:var a;  a的含义就是undefined、
                 *
                 * 但是如果你直接使用 aa, 没有 var aa; 那么浏览器会直接报错
                 * 火狐报的错是 ReferenceError: aa is not defined
                 * 也就是说if(aa){}  或者 aa = aa || []; 浏览器都会报错(引用错误)
                 *
                 * 但是,aa="string"; 这种使用方法是没有错误的!
                 *
                 */
                //aa = "string";console.info(aa);-->string
                console.info(aa);
                //ReferenceError: aa is not defined
            });

上面代码在火狐上产生的效果如下图:

总结下来就是:

在js 中, 空字符串、null、undefined、0 都代表false。

在学习C++的时候,我们知道,逻辑运算符有“截断”(忘了叫什么名字了)的特性:或运算符||  当第一次遇见true的时候,就不在往下面执行了!

那么在js中也只这样的。

  console.info("time" || null);//time    time代表true,后面就不执行了,返回time
  console.info("" || null);//null        "" 代表false,继续执行,返回null
  console.info(null || "");//空字符串      null 代表false,继续执行,返回""
                
a = a || [];
那么这句话的意思就是 如果a未定义就创建一个数组对象!


原文地址:https://www.cnblogs.com/yokoboy/p/2994231.html