除了简单的表达式还有复杂的表达式,它是由简单表达式构成的,将简单表达式组合成复杂表达式最常见的方法就是使用运算符

细说JavaScript表达式和运算符号(JavaScript表达式和运算符号详解)_赋值

一、表达式

表达式分为简单表达式和复杂表达式,但最后的结果均是返回一个值

1、简单表达式

简单表达式又称为原始表达式,由原始数据值构成,是表达式中最小的单位,简单表达式包含常量和变量,常量与变量相对应,变量相当于未知数。而常量相当于已知数,在程序运行中,常量不会被更改

110 // 数值常量
1.1001e7 // 数值常量 科学记数法
"兄弟连" // 字符串常量

常量返回值是其本身,所以它们又被称为原始值,除了字符串和数值外还包括boolean类型的true和false、null类型的唯一值null和正则表达式

true // 布尔类型常量
null // 空值常量
/\d{4}/ // 特殊字符常量

变量也是简单的表达式之一,变量如果没有被赋值会被默认为undefined,也就是说它最终会返回一个值

2、复杂表达式
2.1、使用运算符连接的复杂表达式

简单表达式与复杂表达式是相对存在的,复杂表达式可以说是简答表达式的组合,最常见的复杂表达式是有简单表达式和运算符组成的

var num = 1;
console.log(1 + 1); // 为复杂表达式
2.2、直接量表达式

直接量表达式又称为字面量表达式,它最终返回的值就是其本身,直接量表达式又分为函数直接量表达式、数组直接量表达式、对象直接量表达式

2.3、其它表达式

其它表达式包括数组元素访问表达式、对象属性访问表达式、函数调用表达式以及对象创建表达式

二、运算符

运算符又称为操作符,除算数元算符还有赋值运算符、关系运算符、逻辑运算符、位元算符和其它运算符,js中的运算符可以适用于不同的数据类型,当然也会涉及到类型转换的问题

1、算数运算符

运算符

含义

使用格式

本质

+

加法

a+b

本质

-

减法

a-b

本质

*

乘法

a*b

本质

/

除法

a/b

本质

%

取余/求模

a%b

本质

+

取正

+b

本质

-

取负

-b

本质

++

数值加1后赋值

a++ / ++a

a = a+1


数值减1后赋值

a-- / --a

a = a-1

// 这里重点说下++ 和 -- 运算,递增++ 和递减-- 符号可以放置在操作数的前面或者后面,
// 这种写法称为前增量和后增量或者前减量、后减量,如果单独使用没啥区别,
// 但在运算时、表达式中、流程控制中或者输出中会产生差异
var num = 1;
num++;
console.log(num); // 2
++num;
console.log(num);  // 3
num--;
console.log(num);  // 2
--num;
console.log(num);  // 1


var num =1;
console.num(num++); // 1
console.log(++num); // 3
console.log(num--); // 3
console.log(--num); // 1

// 总结: 
// 当在表达式中使用时,会出现前增量、先累加、后使用;后增量、先使用、后增加,减量与增量的规则一致
2、赋值运算符

运算符

含义

使用格式

常规表达式

=

赋值

a=b

a=b

+=

相加后赋值

a += b

a = a+b

-=

相减后赋值

a-=b

a = a-b

*=

相乘后赋值

a*=b

a = a * b

/=

相除后赋值

a/=b

a = a / b

%=

取余后赋值

a%=b

a = a%b

3、关系运算符

关系运算符又称比较运算符,用来判断运算符左右两个值的关系,或者比较运算符左右两个值的大小

运算符

含义

使用格式

>

大于

a>b

<

小于

a<b

>=

大于等于

a>=b

<=

小于等于

a<=b

==

等于

a==b

!=

不等于

a!=b

===

全等于

a===b

!==

不等于

a!==b

4、逻辑运算符

运算符

含义

使用格式

&&

逻辑与/并且

a&&b

||

逻辑或/或者

a||b

!

逻辑非

!a

逻辑与有短路现象,当判断第一个操作数为false时,就不会去判断第二个操作数
逻辑或也有段路现象,当判断第一个为true并且第二个为false也判定为true
逻辑非运算时,操作数会被转换为布尔值,并且取反,然后返回布尔值

5、位运算符

位运算在编程语言中位于最底层,它是按内存中数值的位来计算数值的。会涉及到计算机底层原理知识,一般不会用到,后面有时间会写一下相关的内容(待补充)

运算符

含义

使用格式

&

位与

b&a

|

位或

a|b

~

位非

~a

^

异或

b^a

<<

左移

b<<a

>>

右移

b>>a

>>>

无符号右移

b>>>a

6、其它运算符

运算符

含义

使用格式

typeof

查看类型

typeof a

delete

删除属性

delete a

void

取消返回值

in

验证属性是否存在

a in b

instanceof

验证对象是否为类的实例


?:

判断表达式,弱真则为执行问好后的表达式,若假则为冒号后面的表达式

a ? b : c

new

构造对象

new A

6.1、instanceof运算符
// 实例判断运算符,用于判断一个对象是否为一个类的实例
var nums = [1,2,3,4];
console.log(nums instanceof Array); // true
6.2、delete运算符
// 删除属性运算符,用来删除对象属性或数组中的元素,返回值为true或false

var obj = {name:"知数SEO"};
delete obj.name;
6.3、in运算符
// 属性验证运算符,用来验证一个对象是否包含某个属性,返回true和false
var obj = {name:"知数SEO"};
console.log("name" in obj);
6.4、void运算符
// 取消返回值运算符,用于解析表达式,并返回undefined
// 例如这个运算符用于阻止<a>标签跳转
<>a href="javascript:void(1=1)"点击链接跳转</a>
6.5、三元运算符(?:)
// 表达式 ? 真区间 : 假区间
// 表达式为真时,则执行真区间代码,否则执行假区间代码
console.log(1+1 == 2 ? "真区间" : "假区间");