运算符和表达式
浮点数
会存在精度问题,建议不要直接使用浮点数参与运算。
console.log(0.1+0.2);//0.30000000000000004
console.log(0.07*100);//7.000000000000001
//不能直接判断两个浮点数是否相等
let num = 0.1+0.3;
console.log(num == 0.3);//false
关于判断一个数是否是整数:使用取余符号来判断:%;
自增自减运算符:++,--
前置自增和后置自增如果单独使用 效果的是一样的,如果的出现在表达式,那么效果就不一样了,自减亦然。
e++:这是一个表达式 ,表达式必须会有一个值,表达式结束之后才会执行++;
例:
let e =10;
let f = e++ + ++e;
首先执行e++,e++是一个表达式,表达式必须返回一个值,所以执行完这个表达式后是这样:10+ ++e,此时执行完表达式后e++才能自增,所以说e=11,那么整个表达式就是这样:10 + ++11;接下来执行后面++e这个表达式,先自增后取值,那么就是12,所以最终就是 10+12=22;
比较运算符
<=, >=:小于等于 ,大于等于
==:js中==默认转换数据类型,会把字符类型转换成数字
18==‘18’//true,只要求值相等,数据类型可以不相等
=== :全等于,18==‘18’//false,值类型都得相等。
逻辑运算符
&&:逻辑与 ,两边为true才为true,反之都为false;
例:3>5 && 3>2; //false;
|| :逻辑或 ,两边为false才为false,反之都为true;
例:3>5 || 3>2; //true;
! :逻辑非, !true;取相反,不是false,就是true;
例:!3>5; //true;
<script>
let num = 9;
let str = "为共产主义奋斗终身";
alert(`num>5 && str.length >= num:${num>5 && str.length >= num}`);//true
alert(`num<5 && str.length >= num:${num<5 && str.length >= num}`);//false
alert(`!(num<10):${!(num<10)}`);//false
alert('!num:'+!num);//true
alert(`!num<10:${!num<10}`);//true :我猜想应该是这样:!num=false 然后false < 10 = true;(false 与 数字比较可能为true 但是false不能与数字进行比较,编译器会报错);
alert(!(num<10 || str.length == num))//false
//逻辑运算符中有一个特殊情况 短路运算,也就是说左边表达式可以确定全部表达式的值 那么逻辑运算符的右边就不会进行运算;
console.log(123&&456);//表达式1为真 结果为真 则返回表达式2
console.log(0 && 456);//表达式1为假 则返回表达式1
console.log(123&&num++);//9 num = 10;
console.log(0 && num++);//0 num = 10;
alert(num);
//反之||逻辑或亦然
//逻辑或 表达式1为真 返回表达式1 ; 表达式1为假 结果为真 返回表达式2
</script>
赋值运算符
= :自左向右;
+= , -= , *= , /= , %= ;
例 : num+=5;--->num = num+5;
逗号运算符
(1,2,3)的值为:3;(自左向右,取最后一个值)
运算符优先级
小括号()> 一元运算符(++,--,!) > 算数运算符(加减乘除取余) > 关系运算符 > 相等运算符 (== ,!== ..) > 逻辑运算符 (&&,||) > 赋值运算符 > 逗号运算符(,)
流程控制
顺序流程控制
一条一条按顺序执行
分支流程控制
根据条件的不同,选择执行语句的不同;
if—else if —else..
三元运算符:条件表达式 ? 表达式1 :表达式2;(条件表达式成立就返回表达式1,不成立返回表达式2)
switch:
<script>
let score = prompt('请输入你的成绩');
let flag = 1;
while(flag !=0){
switch(parseInt(score/10)){
case 10 :alert(`${score}分牛`); flag = 0;break;
case 9 :alert(`${score}分顶尖`); flag = 0;break;
case 8 :alert(`${score}分很认真了`);flag = 0; break;
case 7 :alert(`${score}分可以还不错`); flag = 0;break;
case 6 :alert(`${score}分还行吧`); flag = 0;break;
case 5 :
case 4 :
case 3 :
case 2 :
case 1 :
case 0 :alert(`${score}分药努力哦`); flag = 0;break;
default : alert('输入不满足格式,再试一次吧'); break;
}
if(flag == 1){score = prompt('请输入你的成绩');12}
}
</script>
循坏控制流程
for循环(重点)
例: for(let i = 0;i<100;I++){...}
while循环
例:let i = 0;
while(i<100){ ...i++}
do...while循环
例:do{...i++} while(i<100);
continue
结束当前循环,进入下一次循环。
break
跳出当前循环。