您的位置:首页 > Web前端 > JavaScript

JS--JavaScript表达式和运算符(结合性、优先级)详解

2019-09-21 21:45 267 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/cold___play/article/details/101121599

JavaScript表达式

表达式指可以运算,且必须返回一个值的式子。
表达式一般由值、变量、运算符、子表达式构成。

最简单的表达式可以是一个简单的值或变量:

1		//数字表达式
"a"	//字符常表达式
true	//布尔值表达式
a		//变量表达式

值表达式的返回值是它本身,变量表达式的返回值为变量存储或引用的值。
把这些简单的表达式合并为一个复杂的表达式,那么连接这些表达式的符号就是运算符。

JavaScript运算符

运算符就是根据特定算法定义的执行运算的命令。
示例:a,b,c为变量表达式,而1和2是指表达式。而“=”和“+”是连接这些简单表达式的运算符。

var a = 1, b = 2;
var c = a + b;

运算符一般使用符号来表示,如“+” “-” “/” “=” “|”等,也有些运算符使用关键字来表示,如delete、void等。

作用于运算符的子表达式被称为操作数。根据操作数的个数,JavaScript运算符可以分为如下3种类型:

  • 一元运算符:
    一个运算符能够结合一个操作数,把一个操作数运算后转换为另一个操作数。如“++”,“- -”等。
  • 二元运算符:
    一个运算符能够结合两个操作数,形成一个复杂的表达式。大部分运算符都属于二元运算符。
  • 三元运算符:
    一个运算符能够结合三个操作数,把三个操作数合并为一个表达式,最后返回一个值。JavaScript仅定义了一个三元运算符( ? :),它相当于条件语句。

JavaScript运算符表

分类 运算符 操作数类型 运算顺序 运算方向 说明
算数运算符 + 数值 12 (加法)将两个数相加
++ 数值 14 (自增)将表示数值的变量加1(可以返回新值或旧值)
- 数值 12 (减法)将两个数相减
- - 数值 14 (自减)将表示数值的变量减1(可以返回新值或旧值)
- 数字 14 一元求负运算
+ 数字 14 一元求正运算
* 数值 13 (乘法)将两个数相乘
/ 数值 13 (除法)将两个数相除
% 数值 13 (求余)求两个数相除的余数
字符串运算符 + 字符串 12 (字符串加法)连接两个字符串
+= 字符串 2 连接两个字符串,并将结果赋给第一个字符串
逻辑运算符 && 布尔值 5 (逻辑与)如果两个操作数都是真,则返回真,否则返回假
布尔值 4 (逻辑或)如果两个操作数都是假,则返回假,否则返回真
布尔值 14 (逻辑非)如果其单一操作为真,则返回假,否则返回真
位运算符 & 整数 8 (按位与)如果两个操作数对应位只有一个1,则在该位返回1
^ 整数 7 (按位异或)如果两个操作数对应位只有一个1,则在该位返回1
整数 6 (按位或)如果两个操作数对应位都是0,则在该位返回0
~ 整数 14 (求反)按位求反
<< 整数 11 (左移)将第一操作数的二进制形式的每一位向左移位,所位移的数目由第二操作数指定。右面的空位补0
>> 整数 11 (算数右移)将第一操作数的二进制形式的每一位向右位移,所位移的数目由第二操作数指定。忽略被移出的位
>>> 整数 11 (逻辑右移)将第一操作数的二进制形式的每一位向右移位,所位移的数目由第二操作数指定。忽略被移出的位,左面的空位补0
赋值运算符 = 标识符,任意 2 将第二操作数的值赋给第一操作数
+= 标识符,任意 2 将两个数相加,并将和赋给第一个数
-= 标识符,任意 2 将两个数相减,并将差赋给第一个数
*= 标识符,任意 2 将两个数相乘,并将积赋给第一个数
/= 标识符,任意 2 将两个数相除,并将商赋给第一个数
%= 标识符,任意 2 计算两个数相除的余数,并将余数赋给第一个数
&= 标识符,任意 2 执行按位与,并将结果赋给第一个操作数
^= 标识符,任意 2 执行按位异或,并将结果赋给第一个操作数
标识符,任意 2 执行按位异或,并将结果赋给第一个操作数
赋值运算符 <<= 标识符,任意 2 执行左移,并将结果赋给第一个操作数
>>= 标识符,任意 2 执行算术右移,并将结果赋给第一个操作数
>>>= 标识符,任意 2 执行逻辑右移,并将结果赋给第一个操作数
比较运算符 == 任意 9 如果操作数相等,则返回真
=== 任意 9 如果操作数完全相同,则返回真
!= 任意 9 如果操作数不相等,则返回真
!== 任意 9 如果操作数不完全相同,则返回真
> 数值或字符串 10 如果左操作数大于右操作数,则返回真
>= 数值或字符串 10 如果左操作数大于等于右操作数,则返回真
< 数值或字符串 10 如果左操作数小于右操作数,则返回真
<= 数值或字符串 10 如果左操作数小于等于右操作数,则返回真
特殊运算符 ?: 布尔值,任意 3 执行一个简单的"if…else"语句
,(逗号) 任意 1 计算两个表达式,返回第二个表达式的值
delete 属性标识 14 允许删除一个对象的属性或数组中指定的元素
new 类型,参数 15 允许创建一个用户自定义对象类型或内建对象类型的实例
特殊运算符 typeof 任意 14 返回一个字符串,表明未计算的操作数的数据类型
instanceof 对象,类型 10 检查对象的类型
in 字符串,对象 10 检查一个属性是否存在
特殊运算符 void 任意 14 该运算符指定了要计算一个表达式但不返回值
. (点) 对象,标识符 15 属性存取
[] 数组,整数 15 数组下标
() 函数,参数 15 函数调用

条件运算符

语法格式:

condition ? expr1 : expr2

condition是一个逻辑表达式,当其为true时,则执行expr1表达式,否则执行expr2表达式。
条件运算符可以拆分为条件结构:

if(condition)
expr1;
else
expr2;

示例:借助三元运算符初始化变量为"no value",而不是默认的undefined.

name = name ? name : "no value";
alert(name);

逗号运算符

逗号运算符(,)能够依次计算两个操作数并返回第2个操作数的值。

示例:先定义一个数组a[],然后再一个for循环内利用逗号运算符同时计算两个变量值的变化。这时可以看到输出的数组都是位于二维数组的对角线上。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script>
var a = [];
for(var i = 0, j = 10; i < 10; i++, j--){
a[i,j] = i + j;
document.write(" a[" + i + "," + "]= " + a[i,j]);
}
</script>
</head>
<body>
</body>
</html>

void运算符

void运算符指定要计算一个表达式,但是不返回值。语法如下:

javascript:void (expression)
javascript:void expression

expression时一个要计算的JavaScript标准的表达式。表达式外侧的圆括号是可选的。例如:

<a href="javascript:void(document.forms[0].submit())">提交表单</a>

上面这个代码创建了一个超链接,当用户单击时不会发生任何事。当用户单击超链接时,void(0)计算为0,但在JavaScript上没有任何效果。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: