简介

JavaScript运算符包括:一元运算符、布尔运算符、算术运算符、三元运算符、赋值运算符、位运算符……


一.算术运算符

+
如果是字符串和数字类型相加,最后返回的结果是连接操作,数字类型会隐式转换为字符串类型。

  1. var num = 10; //数字类型
  2. var str = "20"; //字符串类型
  3. console.log(num+str);
  4. //返回的结果是1020,且1020的类型为字符串


-
如果是字符串和数字类型相减,最后返回的结果是正常的减法,字符串类型会隐式转换为数字类型

  1. var num1 = 20;
  2. var num2 = "10";
  3. console.log(num-num2); //返回的结果是10,且10的类型为数字类型

*
如果是字符串和数字类型相乘,最后返回的结果是正常的乘,字符串类型会隐式转换为数字类型

  1. var str1 = 3;
  2. var str2 = "5";
  3. console.log(str1*str2);
  4. //返回的结果是15,且15的类型为数字类型

/
如果是字符串和数字类型相除,最后返回的结果是正常的除,字符串类型会隐式转换为数字类型

  1. var str1 = 10;
  2. var str2 = "5";
  3. console.log(str1/str2);
  4. //返回的结果是2,且2的类型为数字类型

%
如果是字符串和数字类型求模,最后返回的结果是正常的求模,字符串类型会隐式转换为数字类型

  1. var str3 = 8;
  2. var str4 = "5";
  3. console.log(str3%str4); //返回的结果是3,且3的类型为数字类型

二.赋值运算符

=

  1. var num =1;

+=

  1. var num1 = 1;
  2. var num2 =2;
  3. num1+=num2;
  4. alert(num1); //返回结果是3,+=相当于num1 = num1+num2;

-=、*=、/=、%=同上
注意:在数字与字符串做运算时,除了+=是连接,且将数字类型转换为字符串类型。其余的运算均为正常求值, 并且会将字符串隐式转换为数字类型。

三.比较运算符

比较运算符返回的数据类型都为布尔值,非真即假(true或false)
==
同类型数据比较:

  1. var num1 = 5;
  2. var num2 = 5;
  3. alert( num1 == num2);
  4. //返回的值为true

不同类型数据比较:

  1. var num3 = 5;
  2. var num4 = "5";
  3. alert( num3 == num4);
  4. //此时返回的值也为true,尽管比较的两个值是不同的数据类型(一个为数字,另一个为字符串),
  5. //但是由于JS是弱变量类型,所以返回的结果仍然为true

=== 为恒等,该运算符不止比较值,还比较数据类型。只有当值和数据类型都相同,则返回true

  1. var num1 = 5;
  2. var num2 = "5";
  3. alert(num1 === num2);
  4. //num为数字类型,num2位字符串类型。数据类型不同,所以返回false

!= 不等

  1. var num1 = 6;
  2. var num2 = 7;
  3. alert(num1!=num2);
  4. //返回true

> 大于

  1. var num1 = 8;
  2. var num2 = 9;
  3. alert(num1>num2);
  4. //返回false

< 小于

  1. var num1 = 8;
  2. var num2 = 9;
  3. alert(num1<num2);
  4. //返回true


>= **大于等于

  1. var num1 = 7;
  2. var num2 = 7;
  3. alert(num1>=num2);
  4. //返回true

<= 小于等于

  1. var num1 = 5;
  2. var num2 = 7;
  3. alert(num1<=num2);
  4. //返回true

四.一元运算符

i++ 先赋值,再自增1

  1. var num1 = 3;
  2. var num2 = 4;
  3. num1 = num2++;
  4. //返回的值num1为4,num2为5
  5. //在这里遵循的是先赋值,再自增1的原理,首先将num2的值赋值给num1,然后num2再自加1。
  6. //所以得到的结果为4和5

i— **先赋值,再自减1

++i **先自加1,再赋值/—i 先自减1,再赋值**

  1. var num1 = 5;
  2. var num2 = 8;
  3. num1 = ++ num2; //返回的值num1为9,num2为9
  4. //在这里遵循的是先自增1,再赋值的原理。首先将num2的值自加1,然后再赋值给num1。
  5. //所以得到的结果为9和9

五.二元运算符

二元运算符也称逻辑运算符

&& 与

  1. var a = 10;
  2. var b = 20;
  3. var c = 30;
  4. alert(a>b && b>c); //返回的值为false
  5. //由此可以得出,表达式1和表达式2都为false,整体结果为false
  1. var a = 10;
  2. var b = 20;
  3. var c = 30;
  4. alert(a<b && b>c);//此时表达1为true,表达式2位false。 返回的值仍为false
  5. //由此可以得出,表达式1与表达式2只要有一个值为false,则整体返回结果为false

|| 或

  1. var a = 10;
  2. var b = 20;
  3. var c = 30;
  4. alert(a<b || b>c);//返回结果为true
  5. //由此可以得出,表达式1和表达式2有一个为true,整体的结果即为true

! 非(取反)

  1. var bool = true;
  2. alert(!bool); //返回的结果为false

六.三元运算符

格式:条件?执行结果1(true):执行结果2(false)

  1. var a = 10;
  2. var b = 20;
  3. a<b?alert("true"):alert("false");
  4. //10<20所以执行结果1,返回值为true

七.综合案例

1.计算年龄案例

  1. //计算年龄案例
  2. var year = prompt("请输入您的出生年份");
  3. var age = 2020 - year;//year的类型是字符串,但是此案例中用的是减法,有隐式转换
  4. alert("您今天已经"+age+"岁了")

2.简单加法器

  1. //简单加法器
  2. var num1 = prompt("请输入第一个值");
  3. var num2 = prompt("请输入第二个值");
  4. //prompt取到的值为字符串类型,所以在做加法运算时注意数据类型转换
  5. var result = parseFloat(num1)+ parseFloat(num2);
  6. alert("结果是"+result);