1.该运算符对它的运算数逐位执行布尔AND操作,只有两个运算数中相应的位都为1时,结果中的这一位才为1,它要求其运算数为整型,如果运算数不是整型,则会尝试将其转换为32位整型,如果无法转换,就返回NaN。
// 运算数均为整型
alert(9 &9)// 9
alert(9 &10)// 8
alert(1 &3)// 1
// 运算数可以被转换为整型
alert([9] &'9')// 9
alert([9] &['10'])// 8
alert(1.25 &3.25)// 1
// 一个或两个运算数均无法被转换整型
alert(1 &['a'])// 0
alert({} &/\d/)// 0
alert(NaN &NaN)// 0
alert(Infinity &Infinity)// 0
alert(NaN &Infinity)// 0
alert(null &null)// 0
alert(undefined &undefined)// 0
alert(null &undefined)// 0
//----------------------------
2.JS中逻辑&&
例1:
以下是引用片段:
<Script>
var t = true
var f = false
with(document) {
write("<OL><LI>true &&true 的结果是 ", t &&t)
write("<LI>true &&false 的结果是 ", t &&f)
write("<LI>false &&true 的结果是 ", f &&t)
write("<LI>false &&false 的结果是 ", f &&f)
write("<LI>true &&(1==1) 的结果是 ", t &&(1==1))
write("<LI>false &&'A' 的结果是 ", f &&'A')
write("<LI>'A' &&false 的结果是 ", 'A' &&f)
write("<LI>true &&'A' 的结果是 ", t &&'A')
write("<LI>'A' &&true 的结果是 ", 'A' &&t)
write("<LI>'A' &&'B' 的结果是 ", 'A' &&'B')
//&&:有一个不是逻辑值,只要第一个操作数的值为flase,则返回第一个操作数的值flase,否则,返回第二个操作数的值
}
</Script>