好的博客学习记录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的原始值则返回最后一个原始值
不要在该奋斗的年纪而选择了安逸