运算符总览
括号 | (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 οnlοad="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 οnlοad="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 οnlοad="test()"></body> </html>