目录
运算符也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号,常见的运算符:算数运算符,递增和递减运算符,比较运算符,逻辑运算符,赋值运算符。
1:算数运算符
概念:算术运算使用的符号,用于执行两个变量或值的算术运算。
加(+)、减(-)、乘(*)、除(/)、取余(%)
取余(%):返回除法的余数。
注意:浮点数的精度问题
浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度远远不如整数。
var result = 0.1 + 0.2; // 结果不是 0.3,而是:0.30000000000000004
console.log(0.07 * 100); // 结果不是 7, 而是:7.000000000000001
所以:不要直接判断两个浮点数是否相等 !
2:递增和递减运算符
如果需要反复给数字变量添加或减去1,可以使用递增(++)和递减( -- )运算符来完成。
举例:
var num=1;num++;//2
var num=1;++num;//2
放在变量前面时,我们可以称为前置递增(递减)运算符,放在变量后面时,我们可以称为后置递增(递减)运算符。
前置递增:
++num 前置递增,就是自加1,类似于 num = num + 1,简写++num,先自加,后返回值。
var num = 10;
alert(++num + 10); // 21
后置递增:
num++ 就是自加1,类似于 num = num + 1,简写 num++,先返回原值,后自加
var num = 10;
alert(10 + num++); // 20
练习:
var a = 10;
++a;
var b = ++a + 2;
console.log(b);
var c = 10;
c++;
var d = c++ + 2;
console.log(d);
var e = 10;
var f = e++ + ++e;
console.log(f);
3:比较运算符
< 小于号 1<2 true
> 大于号 1>2 false
>= 大于等于 2>=2 true
<= 小于等于 3<=2 false
== 是否相等 2==2 true
!= 不等号 3!=2 true
=== 全等号 要求值和数据类型必须相等举例: “3”===3 false,”3”==3 true
举例:
console.log(3 >= 5); //false
console.log(2 <= 4); //true
console.log(3 == 5);//false
console.log('中文' == 'chinese'); //false
console.log(10 == 10); //true
console.log(10 == '10');//true
console.log(10 != 10); //false
console.log(10 === 10);//true
console.log(10 === '10'); //false
4:逻辑运算符
逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值。
- 逻辑与 &&
两边都是 true才返回 true,否则返回 false
console.log(true && false) //false;
Console.log(3>2 && 1>2); //false
- 逻辑或 ||
只要一边为true既返回 true,两边都为false时返回false
console.log(true || false) //true;
Console.log(3>2 || 1>2); //true
- 逻辑非 !
逻辑非(!)也叫作取反符,用来取一个布尔值相反的值,如 true 的相反值是 false
练习:
var num = 7;
var str = "我爱你~中国~";
console.log(num > 5 && str.length >= num);
console.log(num < 5 && str.length >= num);
console.log(!(num < 10));
console.log(!(num < 10 || str.length == num));
- 短路运算(逻辑中断)
短路运算的原理:当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值;
console.log( 123 && 456 ); // 456
console.log( 0 && 456 ); // 0
console.log( 123 && 456&& 789 ); // 789
console.log( 123 || 456 ); // 123
console.log( 0 || 456 ); // 456
console.log( 123 || 456 || 789 ); // 123
练习:
var num = 0;
console.log(123 || num++);
console.log(num);
var num = 0;
console.log(123 && num++);
console.log(num);
5:赋值运算符
= 直接赋值 var realname=”小明”;
+=,-=,*=,/=,%= 先计算在赋值;
举例:
var age = 10; age+=5;//15
var age = 10; age-=5;//5
var age = 10; age*=5;//50
var age = 10; age/=5;//2
var age = 10; age%=5;//0
练习:
var num = 10;
num += 5;
console.log(num);
var age = 2;
age *= 3;
console.log(age);
6:运算符优先级
1:小括号 ()
2:一元运算符 ++、--、!
3:算数运算符 先*、/、% 后 +、-
4:关系运算符 >、>=、<、<=
5:相等运算符 ==、!= 、===、!==
6:逻辑运算符 先&& 后 ||
7:赋值运算符 =
8:逗号运算符 ,
练习:
- console.log(10 >= 11 || '中文' != 'chinese' && !(10 * 10 == 150))
- var num = 10;
console.log(5 == num / 2 && (2 + 2 * num).toString() === '22');
- var a = 10 > 5 && 5 < 10 && 5 == 10;
console.log(a);
- var b = 5 <=10 || 10 > 5 || 10 != 5;
console.log(b);
7:流程控制
定义:就是来控制代码按照一定结构顺序来执行,流程结构主要分三种:顺序结构、分支结构、循环结构。
顺序机构
最基本的流程控制,它没有特定的语法结构,程序会按照代码的先后顺序执行。
分支结构
由上到下执行代码的过程中,根据不同的条件,执行不同的路径代码,从而得到不同的结果。JS分支结构分为两种:if语句、switch语句。
- if语句
If(条件表达式){
// 条件成立执行的代码
}
If(条件表达式){
// 如果条件成立执行代码
}else{
// 条件不成立 执行此代码
}
// 适合于检查多重条件。
if (条件表达式1) {
执行代码1;
} else if (条件表达式2) {
执行代码2;
} else if (条件表达式3) {
执行代码3;
} else {
// 上述条件都不成立执行此处代码
}
举例:
- switch语句
switch(表达式) {
case n:
代码块
break;
case n:
代码块
break;
default:
默认代码块
}
举例:
var sex=1;
switch (sex){
case 1:
console.log("您喜欢的是猫");
break;
case "狗":
console.log("您喜欢的是狗");
break;
default:
console.log("其他动物");
}
总结:
- 我们开发里面 表达式我们经常写成变量
- 我们num 的值 和 case 里面的值必须是全等
- break 如果当前的case里面没有break 就会继续执行下一个case
8:三元表达式
语法结构: 表达式1 ? 表达式2 : 表达式3;
举例:
Var num=11;
var res = num >10 ? '是的' : '不是的';
Console.log(res); //不是的
练一练:
1: 用户输入一个数,判断其是奇数,还是偶数。
var num = prompt("请输入一个数:");
if (isNaN(num)) {
alert("请输入一个数")
} else if (num % 2 == 0) {
alert("偶数")
} else {
alert("基数")
}
2:输入一个1到99的数字,在数字前面补0,变为3位长度,如001。
var cod = prompt("请输入数字:");
if (isNaN(cod) || cod.length >= 3) {
alert ("请输入两位数字")
} else {
if (cod.length == 1) {
ver = "00" + cod;
}
if (cod.length == 2) {
ver = "0" + cod;
}
alert(ver);
}
3:判断学生考试份数,90(包括)分以上为优秀、80(包括)-90分为合格、60(包括)-80分为及格,60分以下提示“你很危险,该努力”。
var cod = prompt("请输入分数:")
if (cod>90){
alert("优秀")
}
if (cod <=90 && cod>=80 ){
alert("合格")
}
if (cod <=80 && cod>=60 ){
alert("不合格")
}
if (cod <=60 ){
alert("你狠危险,该努力了")
}
4:闰年的定义:四年一闰;百年不闰,四百年再闰。
能被4整除并且不能被100整除或者能被400整除。
- 输入年份判断是否位闰年.
- 输入年份如果是整百,并且能被400整除位世纪闰年。
var cod = prompt("请输入年份:")
if (cod%4 == 0 && ( cod%100 != 0 || cod%400 == 0)){
alert("闰年")
}else{
alert("不是闰年")
}
5:收银店判断水果的价格。1代表苹果10元1斤,2代表梨子20元一斤,3代表葡萄5元一斤。
var cod = prompt("请输入水果编号:")
switch (cod) {
case "1": alert("苹果10元1斤");break;
case "2": alert("梨子20元一斤");break;
default:alert("葡萄5元一斤");
}
6:考驾照的年龄需要在18岁到70岁,不满足条件提示不符合。
var cod = prompt("输入年龄:");
if (cod<=70 && cod >= 18){
alert("符合")
}else{
alert("不符合")
}
7:公园票价,浏览器接收:老人,成人,小孩,老人提示免票,成人中性别“男”为100,“女”为80,小孩为同性别成人的半票。
var cod = prompt("请输入老人,成人,小孩:");
var sex = prompt("请输入男,女:");
var adultman = 100;
var adultwoman = 80;
if (cod == "老人" && (sex == "男" || sex == "女")){
alert("免票")
}
if (cod == "成人"){
if ( sex == "男"){
alert("票价:" +adultman )
}
if ( sex == "女"){
alert("票价:" +adultwoman )
}
}
if (cod == "小孩"){
if ( sex == "男"){
alert("票价:" +adultman/2 )
}
if ( sex == "女"){
alert("票价:" +adultwoman/2 )
}
}
8:用户输入的密码需要1到6位的数字。
var cod = prompt("请输入6为密码:");
if (cod.length == 6){
alert("密码是:" +cod)
}else{
alert("请输入6为密码:")
}
9:会员等级:1代表金牌会员,2是银牌会员,3是铜牌会员,4是普通会员,四种会员进店消费xxx元,其中普通会员无折扣,会员享受9折,如消费满1000元,金牌会员享受6折,银牌会员销售7折,铜牌会员享受8折。浏览器接收会员等级和消费金额,输出折后金额。
var cod = prompt("消费:");
var fex = prompt("请输入会员等级:");
if (cod < 1000) {
if (fex == 4) {
alert("折后金额:" + cod)
}
if (fex != 4) {
alert("折后金额:" + Number(cod * 0.9))
}
}
if (cod > 1000) {
if (fex == 1) {
alert("折后金额:" + Number(cod * 0.6))
}
if (fex == 2) {
alert("折后金额:" + Number(cod * 0.7))
}
if (fex == 3) {
alert("折后金额:" + Number(cod * 0.8))
}
if (fex == 4) {
alert("折后金额:" + Number(cod * 0.9))
}
}