如果.asp页面中有条件,我有以下javascript:
<%@language="javascript"%>
var operator = new String("opstr")
operator.permissions = 2
if((operator.permissions & 1) == 1)
// ...
if((operator.permissions & 2) == 2)
// ...
有人可以解释上面列出的if条件中发生了什么吗?
感谢。
答案 0 :(得分:4)
Read the MDC article on Bitwise Operators
if((operator.permissions & 1) == 1)
有点明智。 1 & 1 === 1
,2 & 1 === 0
,3 & 1 === 1
if((operator.permissions & 2) == 2)
另一位明智的等于1 & 2 === 0
,2 & 2 === 2
,3 & 2 === 2
答案 1 :(得分:3)
在这段特殊代码中,第二个if
语句将始终运行。这是因为operator.permissions & 2
将始终评估为2
(因为此变量之前已设置为2
)。
&
有点AND
。 2
是二进制是10
(在32位中它是0000 0000 0000 0000 0000 0000 0000 0010
)。当您执行逐位AND
时,值将转换为二进制(带符号的32位大端),并且一个操作数的每个位与另一个操作数AND
。当您AND
两个相等的值时,您会得到与结果相同的值。
一些例子(为了便于阅读,我在这里使用4位值):
1 & 1 = 0001 & 0001 = 0001 = 1
2 & 1 = 0010 & 0001 = 0000 = 0
3 & 1 = 0011 & 0001 = 0001 = 1
...
5 & 1 = 0101 & 0001 = 0001 = 1
和
1 & 2 = 0001 & 0010 = 0000 = 0
2 & 2 = 0010 & 0010 = 0010 = 2
3 & 2 = 0011 & 0010 = 0010 = 2
...
6 & 2 = 0110 & 0010 = 0010 = 2
答案 2 :(得分:1)
这些是按位运算符。请阅读此处:http://www.devguru.com/technologies/ecmascript/quickref/bitwise_operators.html了解更多信息。