简介
JavaScript运算符包括:一元运算符、布尔运算符、算术运算符、三元运算符、赋值运算符、位运算符……
一.算术运算符
+
如果是字符串和数字类型相加,最后返回的结果是连接操作,数字类型会隐式转换为字符串类型。
var num = 10; //数字类型
var str = "20"; //字符串类型
console.log(num+str);
//返回的结果是1020,且1020的类型为字符串
-
如果是字符串和数字类型相减,最后返回的结果是正常的减法,字符串类型会隐式转换为数字类型
var num1 = 20;
var num2 = "10";
console.log(num-num2); //返回的结果是10,且10的类型为数字类型
*
如果是字符串和数字类型相乘,最后返回的结果是正常的乘,字符串类型会隐式转换为数字类型
var str1 = 3;
var str2 = "5";
console.log(str1*str2);
//返回的结果是15,且15的类型为数字类型
/
如果是字符串和数字类型相除,最后返回的结果是正常的除,字符串类型会隐式转换为数字类型
var str1 = 10;
var str2 = "5";
console.log(str1/str2);
//返回的结果是2,且2的类型为数字类型
%
如果是字符串和数字类型求模,最后返回的结果是正常的求模,字符串类型会隐式转换为数字类型
var str3 = 8;
var str4 = "5";
console.log(str3%str4); //返回的结果是3,且3的类型为数字类型
二.赋值运算符
=
var num =1;
+=
var num1 = 1;
var num2 =2;
num1+=num2;
alert(num1); //返回结果是3,+=相当于num1 = num1+num2;
-=、*=、/=、%=同上
注意:在数字与字符串做运算时,除了+=是连接,且将数字类型转换为字符串类型。其余的运算均为正常求值, 并且会将字符串隐式转换为数字类型。
三.比较运算符
比较运算符返回的数据类型都为布尔值,非真即假(true或false)
==
同类型数据比较:
var num1 = 5;
var num2 = 5;
alert( num1 == num2);
//返回的值为true
不同类型数据比较:
var num3 = 5;
var num4 = "5";
alert( num3 == num4);
//此时返回的值也为true,尽管比较的两个值是不同的数据类型(一个为数字,另一个为字符串),
//但是由于JS是弱变量类型,所以返回的结果仍然为true
=== 为恒等,该运算符不止比较值,还比较数据类型。只有当值和数据类型都相同,则返回true
var num1 = 5;
var num2 = "5";
alert(num1 === num2);
//num为数字类型,num2位字符串类型。数据类型不同,所以返回false
!= 不等
var num1 = 6;
var num2 = 7;
alert(num1!=num2);
//返回true
> 大于
var num1 = 8;
var num2 = 9;
alert(num1>num2);
//返回false
< 小于
var num1 = 8;
var num2 = 9;
alert(num1<num2);
//返回true
>= **大于等于
var num1 = 7;
var num2 = 7;
alert(num1>=num2);
//返回true
<= 小于等于
var num1 = 5;
var num2 = 7;
alert(num1<=num2);
//返回true
四.一元运算符
i++ 先赋值,再自增1
var num1 = 3;
var num2 = 4;
num1 = num2++;
//返回的值num1为4,num2为5
//在这里遵循的是先赋值,再自增1的原理,首先将num2的值赋值给num1,然后num2再自加1。
//所以得到的结果为4和5
i— **先赋值,再自减1
++i **先自加1,再赋值/—i 先自减1,再赋值**
var num1 = 5;
var num2 = 8;
num1 = ++ num2; //返回的值num1为9,num2为9
//在这里遵循的是先自增1,再赋值的原理。首先将num2的值自加1,然后再赋值给num1。
//所以得到的结果为9和9
五.二元运算符
二元运算符也称逻辑运算符
&& 与
var a = 10;
var b = 20;
var c = 30;
alert(a>b && b>c); //返回的值为false
//由此可以得出,表达式1和表达式2都为false,整体结果为false
var a = 10;
var b = 20;
var c = 30;
alert(a<b && b>c);//此时表达1为true,表达式2位false。 返回的值仍为false
//由此可以得出,表达式1与表达式2只要有一个值为false,则整体返回结果为false
|| 或
var a = 10;
var b = 20;
var c = 30;
alert(a<b || b>c);//返回结果为true
//由此可以得出,表达式1和表达式2有一个为true,整体的结果即为true
! 非(取反)
var bool = true;
alert(!bool); //返回的结果为false
六.三元运算符
格式:条件?执行结果1(true):执行结果2(false)
var a = 10;
var b = 20;
a<b?alert("true"):alert("false");
//10<20所以执行结果1,返回值为true
七.综合案例
1.计算年龄案例
//计算年龄案例
var year = prompt("请输入您的出生年份");
var age = 2020 - year;//year的类型是字符串,但是此案例中用的是减法,有隐式转换
alert("您今天已经"+age+"岁了")
2.简单加法器
//简单加法器
var num1 = prompt("请输入第一个值");
var num2 = prompt("请输入第二个值");
//prompt取到的值为字符串类型,所以在做加法运算时注意数据类型转换
var result = parseFloat(num1)+ parseFloat(num2);
alert("结果是"+result);