JavaScript如果条件帮助

时间:2011-05-17 15:54:32

标签: javascript if-statement

如果.asp页面中有条件,我有以下javascript:

<%@language="javascript"%>

var operator = new String("opstr")
operator.permissions = 2

if((operator.permissions & 1) == 1)
    // ... 
if((operator.permissions & 2) == 2)
    // ...

有人可以解释上面列出的if条件中发生了什么吗?

感谢。

3 个答案:

答案 0 :(得分:4)

Read the MDC article on Bitwise Operators

if((operator.permissions & 1) == 1)

有点明智。 1 & 1 === 12 & 1 === 03 & 1 === 1

if((operator.permissions & 2) == 2)

另一位明智的等于1 & 2 === 02 & 2 === 23 & 2 === 2

答案 1 :(得分:3)

在这段特殊代码中,第二个if语句将始终运行。这是因为operator.permissions & 2将始终评估为2(因为此变量之前已设置为2)。

&有点AND2是二进制是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了解更多信息。