2.4 表达式和运算符

表达式

表达式是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)。

运算符描述AN例子x 运算结果y 运算结果
+加法L2x=y+275
-减法L2x=y-235
*乘法L2x=y*2105
/除法L2x=y/22.55
%取模(余数)L2x=y%215
++自增L2x=++y
x=y++
6
5
6
6
--自减L2x=--y
x=y--
4
5
4
4

赋值表达式

赋值运算符用于给 JavaScript 变量赋值。
给定 x=10 和 y=5,下面的表格解释了赋值运算符:
标题为 A 的列表示运算符的结合性(Associativity),L 表示从左至右、R 表示从右至左,标题为 N 的列表示操作数的个数(Number)。

运算符AN例子等同于x 运算结果
=R2x=yx=5
+=R2x+=yx=x+yx=15
-=R2x-=yx=x-yx=5
*=R2x*=yx=x*yx=50
/=R2x/=yx=x/yx=2
%=R2x%=yx=x%yx=0

关系表达式

关系运算符用于测试两个值之间的关系(比如“相等”,“小于”,“大于”)。
标题为 A 的列表示运算符的结合性(Associativity),L 表示从左至右、R 表示从右至左,标题为 N 的列表示操作数的个数(Number)。

运算符描述AN
==判断相等L2
!=判断不等L2
===判断恒等(值和类型都相等)L2
!==判断非恒等L2
>大于L2
>=大于等于L2
<小于L2
<=小于等于L2

逻辑表达式

逻辑运算符是对操作数进行布尔算术运算。
标题为 A 的列表示运算符的结合性(Associativity),L 表示从左至右、R 表示从右至左,标题为 N 的列表示操作数的个数(Number)。

运算符描述AN
逻辑非R1
&&逻辑与L2
||逻辑或L2

位运算表达式

标题为 A 的列表示运算符的结合性(Associativity),L 表示从左至右、R 表示从右至左,标题为 N 的列表示操作数的个数(Number)。

运算符描述AN
~按位求反R1
<<左移位L2
>>有符号右移L2
>>>无符号右移L2
&按位与L2
|按位或L2
^按位异或L2

其他表达式

标题为 A 的列表示运算符的结合性(Associativity),L 表示从左至右、R 表示从右至左,标题为 N 的列表示操作数的个数(Number)。

运算符描述AN
delete删除属性R1
typeof检测操作数类型R1
void返回undefined值R1
instanceof测试对象类L2
in测试属性是否存在L2

void是一个一元运算符,它出现在操作数之前,操作数可以是任意类型。忽略计算结果并返回undefined。一般使用void来让程序更具语义。

 <a href="javascript:void(0);" onclick="alert('a链接被禁用了')">点击打开</a>


评论

0 条评论
没有更多了..