?
运算符总览
括号 |
(x)?[x] |
中括号只用于指明数组的下标 |
求反,自加减 |
-x |
返回?x?的相反数 |
!x |
返回与?x?(布尔值)相反的布尔值 |
|
x++ |
x?值加?1,但仍返回原来的?x?值 |
|
x-- |
x?值减?1,但仍返回原来的?x?值 |
|
++x |
x?值加?1,返回后来的?x?值 |
|
--x |
x?值减?1,返回后来的?x?值 |
|
乘、除 |
x*y |
返回?x?乘以?y?的值 |
x/y |
返回?x?除以?y?的值 |
|
x%y |
返回?x?与?y?的模(x?除以y?的余数) |
|
加、减 |
x+y |
返回?x?加?y?的值 |
x-y |
返回?x?减?y?的值 |
|
关系运算 |
x<y?x<=y |
当符合条件时返回?true?值,否则返回?false?值 |
等于、 |
x==y |
当?x?等于?y?时返回?true?值,否则返回?false?值 |
x!=y |
当?x?不等于?y?时返回?true?值,否则返回?false?值 |
|
恒等 |
X===y |
X与y数据类型相等且值相等返回true,否则返回false |
? |
||
位与 |
x&y |
当两个数位同时为?1?时,返回的数据的当前数位为?1,其他情况都为?0 |
位异或 |
x^y |
两个数位中有且只有一个为?0?时,返回?0,否则返回?1 |
位或 |
x|y |
两个数位中只要有一个为?1,则返回?1;当两个数位都为零时才返回零 |
? |
||
逻辑与 |
x&&y |
当?x?和?y?同时为?true?时返回?true,否则返回?false |
逻辑或 |
x||y |
当?x?和?y?任意一个为?true?时返回?true,当两者同时为?false?时返回?false |
? |
||
条件 |
c?x:y |
当条件?c?为?true?时返回?x?的值(执行?x?语句),否则返回?y?的值(执行?y?语句) |
赋值、 |
x=y |
把?y?的值赋给?x,返回所赋的值 |
x+=y?x-=y?x*=y |
x?与?y?相加/减/乘/除/求余,所得结果赋给?x,并返回?x?赋值后 |
?
其中有三个需要注意:
一、==(相等)?与?===(恒等)的区别
简单的说,相等判断会进行数据类型转换;而===不转换,必须是数据类型一致且值相等;
转换过程与一般语言的顺序一致;基本都是boolean->int->double->string
例如:
?
<html> <head> <title>test</title> <script type="text/javascript"> function test() { alert(1 == "1");//显示 true alert(1 == true);//显示 true alert(0 == false);//显示 true alert("1" === "1");//显示 true alert(1 === "1");//显示 false alert(1 === true);//显示 false } </script> </head> <body onload="test()"></body> </html>?
?
?
二、另一条可是这样理解,有布尔表达式运算的时候,如果变量不是布尔类型,会用变量的值构造Boolean类型,然后进行运算。
Boolean类型构造原则:值为?0、-0、null、""、false、undefined?或?NaN,则将其变为?false。否则设置为?true(即使参数是字符串?"false")。
例如:
?
?
<html> <head> <title>test</title> <script type="text/javascript"> function test() { alert(!undefined);//true alert(!'');//true alert(!1);//false alert(!0);//true alert(true == 1);//true alert(false == "false");//false if (undefined) { alert(1); } else { alert(2);//alert结果为2 } } </script> </head> <body onload="test()"></body> </html>?
?
?
三、或运算符还可以这么用(在Jquery和Extjs源码中常见到),用来给undefined的变量赋一个默认值。目前还没有找到关于此用法的官方语法解释。例如:
?
<html> <head> <title>test</title> <script type="text/javascript"> function test() { var param;//这里其实是undefined param = param||'hello world!'; alert(param);//显示"hello world!" if (undefined||'') { alert(1); } else { alert(2);//显示的是2 } /** * 本人分析: * 首先'或'运算符将param转为boolean,因为是undefined,因此转为false * 第一个值为false后,或运算符就判断第二个表达式的值,又将string转为true,如果是0/'' 等就返回false; * 不管第二个被转换为true还是false,总之都要返回第二个表达式的值;并且返回的是原数据类型 * 以此来达到默认值的效果 */ } </script> </head> <body onload="test()"></body> </html>?
?
?