(2)对于不是布尔值的情况则:
如果第一个操作数是对象,则返回第二个数
eg:var str = new Array()
console.log(str&&8);//返回值为8
如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象。
如果第两个操作数都是对象,则返回第二个数操作数。
如果有一个操作数是null,则返回null。
eg: console.log(8&&null)//返回结果为null
如果有一个操作数是NaN,则返回第NaN。
如果第一个操作数是undefined,则返回undefined。
(1)对于布尔值,逻辑或是非常简单的,只要有一个true,就返回true;
(2)对于不是布尔值的情况则:
如果第一个操作数是对象,则返第一个操作数
如果第一个操作数的求值结果为false,则返回第二个操作数
如果两个操作数都是对象,则返回第一个操作数
如果两个操作数是null,则返回null
如果两个操作数是NaN,则返回NaN
如果两个操作数是undefined,则返回undefined
如果一个操作数是一个对象,返回false
如果一个操作数是一个空字符串,返回false
如果一个操作数是一个非空字符串,返回false
如果一个操作数是一个数值0,返回true
如果一个操作数是任意的非零字符,返回false
如果一个操作数是null,返回true
如果一个操作数是NaN,返回true
如果一个操作数是undefined,返回true
注:逻辑与,逻辑非都是从左向右判断,谁的第一个逻辑判断为true就显示谁,只不过逻辑非必须两个都为true,而且谁是第一个false就显示谁。
复制代码代码如下:
<script
type="text/javascript">
/*******************************************************************
利用运算符优先级实现ifelse表达式
result
=
expression1
&&
expression2
当且仅当两个表达式的值都等于
True
时,
result
才是
True。
如果任一表达式的值等于
False,
则
result
为
False。
JScript
使用下面的规则,来把非
Boolean
值转换为
Boolean
值:
所有对象都被认为是
true。
字符串当且仅当为空时被认为是
false。
null
和未定义的均被认为是
false。
数字当且仅当为零时是
false。
*******************************************************************/
alert(1&&0)
//false,return
the
first
false's
argument
0
alert(1&&2)
//true,return
the
last
true's
argument
2
/*******************************************************************
result
=
expression1
||
expression2
如果两个表达式中有一个或两个等于
True,则
result
是
True。
JScript
使用下面的规则来把非
Boolean
值转换为
Boolean
值:
所有对象都被认为是
true。
字符串当且仅当为空时才被认为是
false。
null
和未定义的均被认为是
false。
数字当且仅当为
0
时才是
false。
*******************************************************************/
alert(1||0)
//true,return
the
first
ture's
argument
1
alert(0||false)
//false,return
the
last
false'
argument
false
/*******************************************************************
"并列"表达式,返回最后一个表达式
*******************************************************************/
alert((1,0,-1))
//return
the
last
argument
-1
/*******************************************************************
利用运算符优先级实现if(...){...}else{...}
无明确返回值的一律返回undefined
undefined,null都将被转换为false
*******************************************************************/
var
a
=
true
a
&&
(alert('true'),1)
||
alert('false')
/*******************************************************************
或者用三目运算符
*******************************************************************/
a
?
alert('true')
:
alert('false')
</script>
在js中,sort=''或者sort=undefined或者sort=null等等情况sort都是false。只有short.value是一个正常的值时,他本身才是true,此时他与其他值比较时才有意义。