js第n+1天
运算符
算术运算符
求和:+ 求差:- 求积:* 求商:/ 取余:%(取余数)
<script>
let num1 = 10;
let num2 = 5;
console.log(num1 + num2 );
console.log(num1 - num2 );
console.log(num1 * num2 );
console.log(num1 / num2 );
let num3 = 24;
let num4 = 25;
// 取余数,被整除后剩下的数
console.log(num3 % num4 );
// 有多个运算符的时候,先乘除后加减,有括号先算括号里面的
</script>
特点:从左到右,有括号的先算括号里面的,先乘除,取余,后加减
案例1
计算圆的面积 圆的面积公式:Π* r * r
<script>
// 圆的面积 Π×r×r
// Math.PI代表的是Π
let r = prompt("半径");
console.log(Math.PI * r * r);
</script>
赋值运算符
对变量进行赋值的运算符 已经学过的赋值运算符:= (将等号右边的值赋给左边,要求左边必须是个变量) += %= /= *=
<script>
let num = 10;
// num += 1;
// num -= 1;
// num *=2;
// num /=5;
num %=20;
console.log(num);
</script>
一元运算符
自增:++,让变量+1 自减:--,让变量-1
前置自增:
<script>
let i = 1;
console.log(++i);//2
</script>
每执行一次,当前变量值加1(作用相当于num +=1)
后置自减:
<script>
let i = 1;
console.log(i++);//2
</script>
每执行一次,当前变量值加1(作用相当于num +=1
参与运算时,前置后置的区别
前置
<script>
let i = 1;
console.log(++i + 2);//4
</script>
先在自身加1的值,变成2之后再相加,再输出为4
后置
<script>
let i = 1;
console.log(i++ + 2);//3
</script>
先和2相加,输出为3,再在自身加1,变成2
自减也是同理
案例2
<script>
let i = 1;
console.log(i++ + ++i + i);//7
</script>
i++在式子里为1,自身加1 值为2 ++i为2+1值为3 i为3 总计为7
比较运算符
作用:比较大小,是否相等
| 左边是否大于右边 | |
|---|---|
| < | 左边是否小于右边 |
| >= | 左边是否大于或等于右边 |
| <= | 左边是否小于或等于右边 |
| == | 左右两边是否相等,将两边的数据进行转换为数值 |
| === | 左右两边是否类型和值都相等 |
| != | 左右两边数值是否不相等 |
| !== | 左右两边是否不全等 |
==:只比较数值,不比较类型 ===:又比较数值,又比较类型 工作中更常用===,!==
注意点:数字类型跟字符串比较时,会把字符串转变为数字进行比较 字符串比较,是比较的字符对应的ASCII码 从左往右依次比较 如果第一位一样再比较第二位,以此类推 比较的少,了解即可
NaN不等于任何值,包括它本身 尽量不要比较小数,因为小数有精度问题
注意点(比较结果为boolean类型,即只会得到true或false)
逻辑运算符
| && | 逻辑与 | 并且 | 符号两边都为true结果才为true | 一假则假 |
| || | 逻辑或 | 或者 | 符号两边有一个true就为true | 一真则真 |
| ! | 逻辑非 | 取反 | true变false,false变true | 真变假,假变真 |
<script>
// ||或,一真则真
console.log(100 > 10 || 2>23 || 1>21 || 12>2);
// &&与,一假则假
console.log(12 > 10 && 12>32 && 12>3);
// !相反
let num = true
console.log(!num);//false
num = false
console.log(!num);//true
// null undefined 0 ""的布尔值都是false
</script>
逻辑运算符的短路
短路:只存在于 && 和 || 中,当满足一定条件会让右边代码不执行
&&:左边为false就短路 ||:左边为true就短路
案例3
需求:用户输入一个,判断这个数能被4整除,但是不能被100整除
<script>
let num = +prompt('请输入数字')
console.log(num % 4 === 0 && num % 100 !== 0);
</script>
字符串的优先级
一元运算符里面的逻辑非优先级最高
逻辑与比逻辑或优先级高
表达式和语句
表达式是一组代码的集合,javaScript会将其计算出一个结果 语句是js整句或者是命令,就是做某件事
语句
顺序结构
平时写的代码,从上到下执行,就叫顺序结构
分支结构
分支结构让我们有选择性的执行想要的代码
if语句
if语句有三种使用
单分支
<script>
let num = +prompt('请输入数字')
if(num > 300){
document.write('真棒')
}
</script>
满足条件就执行代码,不满足就不执行
双分支
<script>
let num = +prompt('请输入数字')
if(num > 300){
document.write('真棒')
} else {
document.write('真菜')
}
</script>
满足条件就执行上行代码,不满足就执行下面的代码
多分支
<script>
let num = +prompt("输入时间");
if(num < 12 && num > 20){
document.write('上午好')
}else if(num >= 12 && num < 18){
document.write('下午好')
}else {
document.write('晚上好')
}
</script>
三元运算符
条件 ?满足条件执行的代码 : 不满足条件执行的代码(该方法一般拿来取值)
案例4
用户输入2个数,控制台输出最大的值
<script>
let num1 = +prompt('数值1');
let num2 = +prompt('数值1');
num3 = (num1 > num2 ? num1 : num2);
console.log(num3)
</script>
案例5
需求:用户输入1个数,如果数字小于10,则前面进行补0, 比如 09 03 等
<script>
let num = +prompt('数值');
num2 = (num < 10 ? '0' + num : num);
console.log(num2);
</script>
案例6
需求:用户输入2个数字,然后输入 + - * / 任何一个,可以计算结果
<script>
let num1 = +prompt('数值1');
let num2 = +prompt('数值1');
let num3 = prompt('符号');
if(num3 === '+'){
console.log(num1 + num2)
}else if(num3 === '-'){
console.log(num1 - num2)
}else if(num3 === '*'){
console.log(num1 * num2)
}else if(num3 === '/'){
console.log(num1 / num2)
}
</script>