6. 表达式和运算符
表达式
表达式是Javascript中的一个短语,Javascript解释器会将其计算(evaluate)出一个结果。
表达式由数字、运算符、数字分组符号(如括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。
JavaScript 表达式主要有以下几种形式:
■ 原始表达式:常量、变量、保留字。 // "hello", 1.2
■ 对象、数组初始化表达式:var obj={a:1,b:2};,var arr=[1,2,3];
■ 函数定义表达式:var foo=function(x,y){return x*y;}
■ 属性访问表达式:Math.abs, a[1]
■ 调用表达式:fn(1);
■ 对象创建表达式:new object();
运算符概述
Javascript中的运算符用于算术表达式、比较表达式、逻辑表达式、赋值表达式等。
运算符可以根据其操作数的个数进行分类:一元操作符(unary operator)、二元运算符(binary operator)、三元运算符(ternary operator)
一元操作符(unary operator):
var age = 29;
二元运算符(binary operator):将两个表达式合并成一个较为复杂的表达式
var a = 1;
var b = 2;
var c = a*b;
三元运算符(ternary operator):将三个表达式合并成一个表达式 (条件?语句1:语句2)
var a = 3;
type a == "number"?alert("这是一个数字"):alert("这不是一个数字");
算术表达式
算术运算符用于执行变量与/或值之间的算术运算。
标题为 A 的列表示运算符的结合性(Associativity),L 表示从左至右、R 表示从右至左,标题为 N 的列表示操作数的个数(Number)。
运算符 | 描述 | A | N | 例子 | x 运算结果 | y 运算结果 |
---|---|---|---|---|---|---|
+ | 加法 | L | 2 | x=y+2 | 7 | 5 |
– | 减法 | L | 2 | x=y-2 | 3 | 5 |
* | 乘法 | L | 2 | x=y*2 | 10 | 5 |
/ | 除法 | L | 2 | x=y/2 | 2.5 | 5 |
% | 取模(余数) | L | 2 | x=y%2 | 1 | 5 |
++ | 自增 | L | 2 | x=++y x=y++ | 6 5 | 6 6 |
— | 自减 | L | 2 | x=–y x=y– | 4 5 | 4 4 |
赋值表达式
赋值运算符用于给 JavaScript 变量赋值。
给定 x=10 和 y=5,下面的表格解释了赋值运算符:
标题为 A 的列表示运算符的结合性(Associativity),L 表示从左至右、R 表示从右至左,标题为 N 的列表示操作数的个数(Number)。
运算符 | A | N | 例子 | 等同于 | x 运算结果 |
---|---|---|---|---|---|
= | R | 2 | x=y | x=5 | |
+= | R | 2 | x+=y | x=x+y | x=15 |
-= | R | 2 | x-=y | x=x-y | x=5 |
*= | R | 2 | x*=y | x=x*y | x=50 |
/= | R | 2 | x/=y | x=x/y | x=2 |
%= | R | 2 | x%=y | x=x%y | x=0 |
关系表达式
关系运算符用于测试两个值之间的关系(比如“相等”,“小于”,“大于”)。
标题为 A 的列表示运算符的结合性(Associativity),L 表示从左至右、R 表示从右至左,标题为 N 的列表示操作数的个数(Number)。
运算符 | 描述 | A | N |
---|---|---|---|
== | 判断相等 | L | 2 |
!= | 判断不等 | L | 2 |
=== | 判断恒等(值和类型都相等) | L | 2 |
!== | 判断非恒等 | L | 2 |
> | 大于 | L | 2 |
>= | 大于等于 | L | 2 |
< | 小于 | L | 2 |
<= | 小于等于 | L | 2 |
逻辑表达式
逻辑运算符是对操作数进行布尔算术运算。
标题为 A 的列表示运算符的结合性(Associativity),L 表示从左至右、R 表示从右至左,标题为 N 的列表示操作数的个数(Number)。
运算符 | 描述 | A | N |
---|---|---|---|
! | 逻辑非 | R | 1 |
&& | 逻辑与 | L | 2 |
|| | 逻辑或 | L | 2 |
位运算表达式
标题为 A 的列表示运算符的结合性(Associativity),L 表示从左至右、R 表示从右至左,标题为 N 的列表示操作数的个数(Number)。
运算符 | 描述 | A | N |
---|---|---|---|
~ | 按位求反 | R | 1 |
<< | 左移位 | L | 2 |
>> | 有符号右移 | L | 2 |
>>> | 无符号右移 | L | 2 |
& | 按位与 | L | 2 |
| | 按位或 | L | 2 |
^ | 按位异或 | L | 2 |
其他表达式
标题为 A 的列表示运算符的结合性(Associativity),L 表示从左至右、R 表示从右至左,标题为 N 的列表示操作数的个数(Number)。
运算符 | 描述 | A | N |
---|---|---|---|
delete | 删除属性 | R | 1 |
typeof | 检测操作数类型 | R | 1 |
void | 返回undefined值 | R | 1 |
instanceof | 测试对象类 | L | 2 |
in | 测试属性是否存在 | L | 2 |
void是一个一元运算符,它出现在操作数之前,操作数可以是任意类型。忽略计算结果并返回undefined。一般使用void来让程序更具语义。
<a href="javascript:void(0);" onclick="alert('a链接被禁用了')">点击打开</a>