好的博客学习记录2-DevilShow之探寻 JavaScript 逻辑运算符,与、或的真谛

  学习他人的博客写出来的东西,记录一下

  源博客地址:探寻JavaScript逻辑运算符(与、或)的真谛

  总结:

  在JavaScript的隐试转换中有几个值会转换为false;其他的值会转换为true,这几个值为

  1、NaN

  2、undefined

  3、null

  4、""

  5、0

  6、-0

  7、false

  与、或运算符不是我们想的那样!

  比如

        if(123 && "a"){
            alert(1);
        }

  if()语句会判断里面是不是布尔值,如果不是就会隐式转换为布尔值,那么 123 && "a" 会返回什么?答案是:123

  所以上面这段代码应该是这样执行的

  if(123 && "a") > if( 123 ) > if( true ) > alert(1)

  && 和 || 运算符都会返回一个原始值,那么按照什么规则返回呢?

  看看&&

        var And1 = 123 && 'a';
        alert(And1);//'a'
var And2 = undefined && 'a'; alert(And2);//undefined
var And3 = 123 && 0; alert(And3);//0

  从上面的代码可以看出 && 运算符会优先返回布尔值为false的原始值,如果没有转换为布尔值为false的原始值则返回最后一个原始值

  

  看看||

        var Or1 = 0 || 'a';
        alert(Or1);//'a'
var Or2 = 'a' || 0; alert(Or2);//'a'
var Or3 = 0 || undefined; alert(Or3);//undefined;

  从上面的代码可以看出 || 运算符会优先返回布尔值为true的原始值,如果没有转换为布尔值为true的原始值则返回最后一个原始值