运算符总览
括号 |
(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>