01-JS的算术运算符
/ + - * / % /(加 减 乘 除 取余)
隐式转换:js内部帮我们转换方法有:- * / == != 减 乘 除 等于 不等于
显性转换:自己手动转换数据类型
除了加法数据类型不是 number类型时 会进行拼接,其他都不会拼接,会进行隐式转换。
// console.log(1 + 2) // 3
// console.log(1 + '2') // 12
// console.log(2 - 2) // 0
// console.log(2 - '2') // 2 - '2' --> 2 -2 == 0
// console.log(1 * 3) // 3
// console.log(1 * '3') // 1 * '3' --> 1 * 3 == 3
// console.log(3 / 1) // 3
// console.log(3 / '1') // 3 / '1' --> 3 / 1 == 3
// console.log(7 % 2) // 1
// console.log(7 % '2') // 7 % '2' --> 7 % 2 == 1
02-Js的赋值运算符(为了运算;可以不用;作用是简化代码量)
赋值运算符:(+=、-=、/=、%=)
- a+=10 等价于a=a+10
- a-=10 等价于a=a-10
- a*=10 等价于a=a * 10
- a%=10 等价于a=a%10
03- Js的比较运算符
比较运算符:> < >= <= == === != !==
(大于 小于 大于等于 小于等于 等于 全等 不等 不全等)
- ==与===作用一样,用于比较来个两侧数据是否相等。
- == 只对比数据,不对比数据类型。
- === 不仅对比数据,而且也对比数据类型
== 在对比数据时,两侧数据不同,比如,一侧是数字,一侧是字符串,会进行隐形转换
// console.log(2 == 2) // true
// console.log(2 === 2) // true
// console.log(2 == '2') // true
// console.log(2 === '2') // false
- != 与 !==作用相同,对比两侧数据是否相同,相同时返回false,不相同返回true
- != 只对比数据,不对比数据类型。(会进行隐形转换,转换成相同类型在对比)
- !==不仅对比数据,而且也对比数据类型
// console.log(2 != 2) // false
// console.log(2 !== 2) // false
console.log(2 != '2') // false
console.log(2 !== '2') // true
04-js的逻辑运算符
逻辑运算符:&& || !
() 大于 ++ -- ! 大于 * / % + - 大于 > >= < <= 大于 == != === !== 大于 && || 大于 = 大于,
逻辑与 &&
语法:变量1 && 变量2/表达式1 && 表达式2
返回方式:
前一个为真,就返回后一个
前一个为假,就返回第一个
// var bo = true && false // 前一个为真, 返回后一个, 所以会把 false 返回
// var bo1 = false && true // 前一个为假, 直接返回前一个, 所以会把 false 返回
// console.log(bo) // false
// console.log(bo1) // false
逻辑或 ||
返回方式:
前一个为真,返回左侧
前一个为假,返回右侧
逻辑非 !
作用:改变变量值的布尔型
05-js的自增与自减运算符
自增与自减:变量名前后加上++ --
自增分为 前置++ 与 后置++
前置++:
var b = ++a
1.先给a自增1,a的值为1
2.参与周围表达式与运算,把a的值给赋给 变量
后置++ :
var b = a++
1.把a的值先赋给变量,(此时还没有自增)
2.自增1
自减分为前置-- 与 后置--
前置--:
var b = --a
1.先给a自减1,a的值为-1
2.参与周围表达式与运算,把a的值给赋给 变量
后置-- :
var b = a--
1.把a的值先赋给变量,(此时还没有自减)
2.自减1
06-分支语句
if 语句
语法:if () {当条件为真时,执行的代码}else{当前面的条件都为假时,会执行else}
var a = 200
if (a > 1) {
console.log(1)
} else if (a == 2) {
console.log(2)
} else if (a == 3) {
console.log(3)
} else {
console.log(100)
};
- if 判断 * 从上往下依次检查, 查询是否满足条件 * 如果满足, 则仅执行当前分支, 其他不执行 * 如果不满足, 则会进行下一个 if 的判断, 成功则执行, 不成功继续往下执行 * 直到 最后一个 if 成功则执行, 不成功则不执行 * 最后 查看是否有 else 分支, 如果有, 且前边所有的 if 条件都为假 此时 会执行 else 分支
07-switch--case--default
语法:
switch (条件) {
case 21:
满足 case 1 时, 执行的代码
break;
case 2:
满足 case 2 时, 执行的代码
break;
default:
上述条件都不满足,执行。
}
注意:switch case在做对比的时候,使用的严格的 全等,也就是会对比数据类型。
default: 上述条件都不满足,执行。
switch 的穿透性:当case后没有跟随break时,会从第一个满足条件的case开始执行,一直到最后一个 或者出现break
var num = 3
switch (num) {
case 1:
console.log('现在是 1月')
case 2:
console.log('现在是 2月')
case 3:
console.log('现在是 3月')
case 4:
console.log('现在是 4月')
case 5:
console.log('现在是 5月')
break;
case 6:
console.log('现在是 6月')
case 7:
console.log('现在是 7月')
}
打印的结果是
08-三元表达式(三目表达式)
语法:条件 ? 条件为真时执行(只能一行) : 条件为假时执行(只能一行)
true ? console.log('条件为真') : console.log('条件为假')
案例1
案例2:通过用户输入的年份和月份,计算出本月是多少天 (使用switch)
var year = 2022
var day;
var m = 2;
swtich (m){
case 1;
case 3;
case 5;
case 7;
case 8;
case 10;
case 12;
day = 31
break;
case 2;
case 4;
case 6;
case 9;
case 11;
day = 30
break;
case 2;
if (year % 4 = 0 && year % 100 !== 0 ||year % 400 ==0){
day = 29 //是闰年
}else{
day = 28 //平年
}
break;
}
console.log(year + "年" + m +'月有' + day + '天')