03. JavaScript运算符

一.算术运算符

  • 算术运算符用在数学表达式中, 它的使用方式和数学中也是一致的.
  • 算术运算符是对数据进行计算的符号
  • 可以直接对数据进行操作, 也可以操作变量指向的数据.
运算符 运算规则 范例 结果
+ 正号 +3, 和直接写3一样 3
+ 加法 2 + 3 5
+ 连接字符串 ‘中’+ ‘国’ ‘中国’
- 减法 2 - 3 -1
* 乘法 2 * 3 6
/ 除法 5 / 2 2.5
% 取余数 5 % 2 1
++ 自增 3++或++3 4
-- 自减 3--或--3 2
image-20210511201319751

二.前置后置运算符

  • JavaScript支持:自增++和自减--,通常都是用在数字变量上
  • 自增:++
    • 分为前置自增和后置自增
    • image-20210512004220023
  • 自减:--
    • 分为前置自减和后置自减
    • image-20210512004257754
  1. ++,--:在前,先自增(自减),再参与运算
  2. ++,--:在后,先运算,在自增(自减)

三.赋值运算符

  • 赋值运算符主要是给某个变量进行赋值
    • 赋值运算符是算术运算符和赋值的一种简便写法.
    • 比如 a = 3; a = a + 1;
    • 第二句可以写成 a += 1;
运算符 运算规则 范例
= 赋值 a = 5 5
+= 加后赋值 a = 5, a += 2 7
-= 减后赋值 a = 5, a -= 2 3
*= 乘后赋值 a = 5; a *= 2 10
/= 除后赋值 a = 5; a /= 2 2.5
%= 取余后赋值 a = 5; a %= 2 1

四.比较运算符(比较运算符)

  • 比较运算符,又叫关系运算符
    • 它是用来判断两个操作数的大小关系及是否相等关系的
    • 结果是布尔类型(bool): True或者False
    • 比较运算符经常用在后面学习的if/while语句中
    • 学习if语句的使用
  • ==关系运算符的结果为布尔值==
运算符 运算规则 范例 结果
== 相等 4 == 3 false
!= 不等于 4 != 3 true
> 大于 4 > 3 true
< 小于 4 < 3 false
>= 大于等于 4 >=3 true
<= 小于等于 4 <= 3 false

4.1 相等

一.关系运算符:> < >= <= != == = == !==

1.关系运算符的结果是布尔值

2.对于数值类型:关系运算符直接运算,返回结果

对于非数值类型:自动转换为数值类型,再进行运算

 *2.1 如果比较运算符两边都是非数值情况,则不会转换为数值,而是比较字符串的字符unicode编码*

二.相等运算符

*1.比较数值型时,返回正常的true或false*

*2.比较一个为数值型,一个为非数值型时,会把非数值型的转换为数值型,再进行运算*

*3.两个非字符型的比较,会先转换为数值型,再比较*

*4.undefined衍生自null,所有两个值比较为true*

*5.NaN不喝任何值相等包括它自己*

 *判断变量是否为NaN的方法isNaN();*

相等操作符对于不同类型的值,进行的比较如下图所示:

image-20210512094815042

4.2 全等

全等操作符比较两个值是否相等,两个被比较的值在比较前都不进行隐式转换。如果两个被比较的值具有不同的类型,这两个值是不全等的。否则,如果两个被比较的值类型相同,值也相同,并且都不是 number 类型时,两个值全等。最后,如果两个值都是 number 类型,当两个都不是 NaN,并且数值相同,或是两个值分别为 +0 和 -0 时,两个值被认为是全等的。

var num = 0;
var obj = new String("0");
var str = "0";
var b = false;

console.log(num === num); // true
console.log(obj === obj); // true
console.log(str === str); // true

console.log(num === obj); // false
console.log(num === str); // false
console.log(obj === str); // false
console.log(null === undefined); // false
console.log(obj === null); // false
console.log(obj === undefined); // false

五.逻辑运算符

  • 逻辑运算符,它是用于将多个条件放在一起进行运算的

    • 逻辑运算符的运算结果也是Boolean类型: true/false

    • 逻辑运算符也应用if/while的判断句中, 并且是多个条件时会使用到

      运算符 运算规则 范例 结果
      && 与: 同时为真 false && True false
      || 或: 一个为真 false or frue true
      ! 非: 取反 !false true
  • 逻辑与补充:(了解)

    • 逻辑与运算符可以应用于任何数据类型,且不一定返回布尔值。
    • 对于非布尔值运算,会先将非布尔值转换为布尔值。
  • 逻辑或补充:(了解)

    • 逻辑或运算符可以应用于任何数据类型,且不一定返回布尔值。
    • 对于非布尔值运算,会先将非布尔值转换为布尔值。
  • 逻辑非 !

    • 1.对布尔值进行逻辑运算,true变false,false变true
    • 2.对一个值进行两次非运算,值不变
    • 3.对非布尔值进行非运算,会将其先变成布尔值,再取反
      • ==3.1我们可以根据这一原理,将别的类型转换为布尔型:就是对别的数据类型进行两次非操作,原理其实跟Boolean()相同==
  • 逻辑与 &&

    • 1.布尔类型进行与运算时:两边都是true,结果为true;只要有一个false结果就为false
    • ==2.JS中的“与”属于短路与:第一个值为false,则不会看第二个值==
  • 逻辑或 ||

    • 1.两个值中只要有一个true,就返回true;如果两个值都为false,才返回false
    • ==2.JS中的“或”属于短路或:只要第一个值为true,则不会看第二个值==
  • ==非布尔值的与或运算==非布尔值的与运算:先将非布尔值转换为布尔值,再进行运算,最后返回原值

    • ==与运算==

      • 如果第一个值是true,则返回第二个值

      • 如果左右两边的结果有一个false,则返回前一个false的值

      • //非布尔值的逻辑与
        console.log(1&&2);//2
        console.log(2&&0);//0
        console.log(NaN&&5);//NaN
        console.log(""&&6);//""
        
    • ==或运算==

      • 如果第一个值是true,则返回第一个值

      • 如果第一个值是false,则返回第二个值

      • console.log(2||0);//2
        console.log(NaN||2);//2
        console.log(NaN||0);//0
        
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script type="text/javascript">
/* 
一.JS中的三种逻辑运算符:
1.逻辑非 !
  1.对布尔值进行逻辑运算,true变false,false变true
  2.对一个值进行两次非运算,值不变
  3.对非布尔值进行非运算,会将其先变成布尔值,再取反
    3.1我们可以根据这一原理,将别的类型转换为布尔型:就是对别的数据类型进行两次非操作,原理其实跟Boolean()相同
2.逻辑与:&&
  1.布尔类型进行与运算时:两边都是true,结果为true;只要有一个false结果就为false
  2.JS中的“与”属于短路与:第一个值为false,则不会看第二个值
3.逻辑或:||
  1.两个值中只要有一个true,就返回true;如果两个值都为false,才返回false
  2.JS中的“或”属于短路或:只要第一个值为true,则不会看第二个值
二.非布尔值的与或运算
  1.与运算
    1.1非布尔值的与运算:先将非布尔值转换为布尔值,再进行运算,最后返回原值
    1.2 如果第一个值是true,则返回第二个值
    1.3 如果左右两边的结果有一个false,则返回前一个false的值 
  2.或运算
   2.1如果第一个值是true,则返回第一个值
   2.2 如果第一个值是false,则返回第二个值   
*/
//短路与
//true&& alert("我弹出来了!");
//false&&alert("我弹不出来了!");
/* 
//非布尔值的逻辑与
console.log(1&&2);//2
console.log(2&&0);//0
console.log(NaN&&5);//NaN
console.log(""&&6);//"" 

*/
//非布尔值的逻辑或
console.log(2||0);//2
console.log(NaN||2);//2
console.log(NaN||0);//0
  </script>
</head>
<body>
  
</body>
</html>

六.三元运算符

三元运算符:表达式 ?A:B;

语法:
* 表达式? 值1:值2;
* 判断表达式的值,如果是true则取值1,如果是false则取值2;

七. 字符串连接符

==+:如果运算的数据只包含字符串,那么结果就是字符串(会强制转换)==

八.运算符的优先级

image-20210512103324720

九.位运算符

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、运算符 前期准备: Python支持:数学运算符、比较运算符、逻辑运算符、赋值运算符、(位运算符)注意:运算符...
    绝世小丑阅读 521评论 0 0
  • 一.运算符 运算符(Operators,也翻译为操作符),是发起运算的最简单形式。 运算符的分类各有不同,我们就把...
    不会编程的懒洋洋QAQ阅读 177评论 0 2
  • 运算符 运算符也叫操作符 通过运算符可以对一个活多个值进行运算,并获取运算结果比如Ltypeof就是运算符,可以获...
    琳啊kp阅读 186评论 0 0
  • 在编程语言当中,运算符是处理数据的基本方法,能够根据现有的值得到新的值。运算符也叫操作符,通过运算符可以对一个或多...
    啃馒头的狼阅读 288评论 0 1
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,615评论 28 53