JavaScrip-运算符-知识点

运算符

  • 运算符
    • 运算符分类
    • 算术运算符
    • 递增和递减运算符
    • 比较运算符
    • 逻辑运算符
    • 赋值运算符
    • 三元运算符
    • 逗号运算符
    • 运算符优先级

运算符

运算符分类

  • 算术运算符
  • 递增和递减运算符
  • 比较运算符
  • 逻辑运算符
  • 赋值运算符
  • 三元运算符
  • 逗号运算符

算术运算符

概念:算术运算使用的符号,用于执行两个变量或值的算术运算。

运算符 描述 实例
+ 10 + 10 = 20
- 10 - 10 = 0
* 10 * 10 = 100
/ 10 / 10 = 1
% 取模 10 % 10 = 0

注意!!!

浮点数的精度问题

浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度容易丢失。

     var a = 0.1 + 0.4;
     var b = 0.1 + 0.5;
     console.log(a == b);   //结果为false 因为a为0.6000000000000001 ;b为0.6
     console.log(0.7 - 0.4); //结果:0.29999999999999993
     console.log(0.9 - 0.6); //结果:0.30000000000000004

结论:
浮点数进行算术计算时精度不准确,不能直接判断两个浮点数是否相等

表达式:

是由数字、运算符、变量等以能求得数值的有意义排列方法所得的组合

简单理解:表达式是由数字、运算符、变量等组成的式子

返回值:

表达式最终都会有一个结果,返回给开发者,称为返回值

//1 + 1 就是一个表达式
console.log(1 + 1);// 2就是返回值
//在程序中不用1 + 1 = 2;程序中是2 = 1 + 1;将右边的表达式计算完毕赋值给左边
var  num = 1 + 1;
consloe.log(num); //2就是返回值

递增和递减运算符

递增(++)递减( – ) 运算符放置在变量前面叫做前置递增(递减)运算符;放置在变量后面叫做后置递增(递减)运算符

注意!!!

递增和递减运算符必须和变量配合使用,不能是++11--

前置递增运算符:先自加,后返回值。

即++x运算时,是x先自加1,变为x=1,++x运算后返回值便是1

后置递增运算符:先返回原值,后自加 。

即y++运算时 先返回自加前的值,即y++返回值为0,然后再自加1,y=1

案例讲解:

var a = 10;
var b = a++ + ++a;
console.log(b);

案例解析

a++先返回原值,即a++等于10,但a加1后变为11,之后运算++a 是指11自加1后返回,即12。所以b等于10+12=22。

小结:

单独写++num 和 num++ 结果是一样的;与其他代码一起的时候,执行结果会不一样
一般使用后置递增(递减)运算符,且代码独占一行,例如:num++ 、num--

比较运算符

概念:比较运算符(关系运算符)是两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值(true / false)作为比较运算的结果。

运算符名称 说明 案例 结果
< 小于号 1<2 true
> 大于号 1>2 false
>= 大于等于号 2>=2 true
< = 小于等于号 3<=2 false
== 判等号 37==37 true
!= 不等号 37!=37 false
=== 全等号 比较两个操作数的值是否相等,同时检测它们的类型是否相同 37===‘37’ false
!== 不全等号 比较两个操作数的值是否不相等,同时检测它们的类型是否不相同 37!==‘37’ true

=、==、===等号区别对比

符号 作用 用法
= 赋值 把右边给左边
== 判断 判断两边值是否相等(注意隐式转换)
=== 全等 判断两边的值和数据类型是否完全相同

重点:隐式转换

在不同数据类型用双等号(==) 进行比较时,会有系统自动完成的一步类型转换。

> 字符串和数字比较时,字符串转换为数字,再进行比较运算。
		'10' == 10     // true
> 字符串和布尔值进行比较时,二者全部转换成数字,再进行比较运算。
		'1' == true    // true
> 布尔值和数字进行比较时,布尔转换为数字,再进行比较运算。
		 0 == true     // false

代码演示:

console.log(21 == '21'); //true 经过隐式转换后两值相等
console.log(21 === '21'); //false 数据类型不一致
console.log(21 != '21'); //false 经过隐式转换后两值相等,所以!=为false
console.log(21 !== '21'); //true  数据类型不一致 所以不等是true

逻辑运算符

概念:逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值。后面开发中经常用于多个条件的判断

&& “逻辑与”,简称“与” (and) 【true && true】
|| “逻辑或”,简称“或” (or) 【true || false】
! “逻辑非”,简称“非” (not) 【! true】

逻辑与 【&&】类似于"并且" :两边都是 true才返回 true,否则返回 false
逻辑或 【| |】 类似于"或者" :一边为true或两边均为true 就返回 true,否则返回 false
逻辑非 【!】 逻辑非【!】也叫作取反符,用来取一个布尔值相反的值,如 true 的相反值是 false

短路运算(逻辑中断)

&& 和 || 的结果不一定是布尔类型。比如短路运算时。

短路运算的原理:
当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值。

①逻辑与&&短路运算

表达式1 && 表达式2 && 表达式3
&& 为取假运算,从左到右依次判断,如果遇到一个假值,就返回假值,以后不再执行,否则返回最后一个真值;

②逻辑或||短路运算

表达式1 || 表达式2 || 表达式3
|| 为取真运算,从左到右依次判断,如果遇到一个真值,就返回真值,以后不再执行,否则返回最后一个假值。

赋值运算符

概念:用来将右侧的值赋给左侧的变量的运算符。
=:直接赋值
*+=、-=:加、减 一个数 后在赋值
=、/=、%=:乘、除、取模 后在赋值

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 //* 连续取模赋值是无意义的,因为结果都是一样的

三元运算符

三元运算符又叫条件运算符

语法:条件表达式?语句1:语句2

执行步骤:

  1. 三元运算符在执行时,首先对条件表达式进行求值
  • 如果结果为true,则执行语句1,并返回执行结果
  • 如果结果为false,则执行语句2,并返回执行结果

2.如果条件的表达式的求值结果是一个非布尔值

  • 会将其转换为布尔值,然后再运算

注意!!!

 三元运算有返回值,可用变量承接。

逗号运算符

逗号运算符可用于多个变量连续赋值

运算符优先级

  • 一元运算符里面的逻辑非优先级很高
  • 逻辑与逻辑或 优先级高

运算符的优先级:
1、 小括号 ()
2、 一元运算符: ++ - - !
3、 算术运算符: 先 * / % 后 + -
4、 关系运算符: > < >= <=
5、 相等运算符: == != === !==
6、 逻辑运算符: 先 && 后 ||
7、 三元运算符: 条件 ? 语句1 : 语句2
8、 赋值运算符: = += *= ……
9、 逗号运算符: ,

以上总结的知识点可能会有些错误的地方,如有更好的建议,欢迎您在评论区友善发言。

你可能感兴趣的:(javascript)