目录
运算符
1.1 赋值运算符
对变量进行赋值的运算符
1.1.1 := 将等号右边的值赋予给左边 要求左边必须是个容器
1.1.2 :+= 变量自加 在进行赋值 如let num = 10,则num加5: num +=5
1.2 一元运算符
自增一元运算符:++ 让变量的值+1 经常用于计数来使用
用法:1.前置自增:++i 先自加再使用 ++在前 先加
2.后置自增: i++ 先使用再自加 ++在后 后加
区别:前置自增和后置自增单独使用没有区别 但是参与运算就有区别了
面试题:结果是7
<script>
let i = 1
console.log(i++ + ++i + i)
</script>
1.3 比较运算符
1.3.1 比较两个数据大小。比较结果为boolean类型 只会得到true或false
=赋值 ==是判断 ===是全等(强烈推荐使用)
1.3.2 字符串比较:是比较的字符对应的ASCII码
1.3.3 NAN 不等于任何人,包括他自己 涉及到NAN都是false
1.3.4 尽量不要比较小数 因为小数有精度问题
1.4 逻辑运算符
用来解决多重条件判断。
逻辑与&&:1.第一个操作数为真:会进入第二个操作数的判断,且无论第二个操作数真假,都会 返回第二个操作数。
2.第一个操作数为假:不会进入第二个操作数的判断,直接返回第一个操作数。
逻辑或||:1.如果第一个操作数为真,则不会进入第二个数的判断。所以无论第二个操作数 真假,都直接返回第一个操作数
2.如果第一个操作数为假,则会进入第二个数的判断。但是无论第二个操作数真 假,都直接返回第二个操作数
console.log(NaN || "") 结果是" "。console.log(0 || false) 结果是false(因fasle隐式转换成数字0)。console.log(' ' || false) 结果是false(因' '空串是假值)。console.log(0 == false) 结果是true。空串和0都属于假值。null跟undefinde双等为真 三等为假。
1.5 运算符优先级
掌握运算符优先级 能判断运算符执行的顺序
- 一元运算符里面的逻辑非优先级很高
- 逻辑与比逻辑或优先级高
语句
js中的流程控制语句一共分三类:顺序结构,分支结构和循环结构。
2.1 表达式和语句
表达式是可以被求值的代码。可以写在赋值语句的右侧
语句是一段可以执行的代码。语句不一定有值 如alert()for break等语句
2.2 分支语句
分支语句可以让我们有选择性的执行想要的代码
2.2.1 if语句
1.单分支if语句语法:
if(条件表达式) {
// 满足条件要执行的语句
}
小括号内的条件结果是布尔值,为 true 时,进入大括号里执行代码;为false,则不执行大括号里面代码。小括号内的结果若不是布尔类型时,会发生类型转换为布尔值,类似Boolean()。如果大括号只有一个语句,大括号可以省略,但是不提倡这么做~
2. 双分支if语句语法:如果有两个条件的时候,可以使用 if else 双分支语句
if (条件表达式){
// 满足条件要执行的语句
} else {
// 不满足条件要执行的语句
}
练习:判断闰年案例
<script>
// 1. 用户输入
let year = +prompt('请输入年份')
// 2. 判断输出
if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) {
alert(`${year}年是闰年`)
} else {
alert(`${year}年是平年`)
}
</script>
3.多分支if语句语法: 使用场景: 适合于有多个条件的时候
if (条件1) {
代码1
} else if (条件2) {
代码2
} else if (条件3) {
代码3
} else {
代码n
}
2.2.2 三元运算符
使用场景: 一些简单的双分支,可以使用 三元运算符(三元表达式),写起来比 if else双分 支 更简单
符号:? 与 : 配合使用
语法: 条件 ? 满足条件执行的代码 : 不满足条件执行的代码
练习:数字补0案例
<script>
// 1. 用户输入
let num = prompt('请您输入一个数字:')
// 2. 判断输出- 小于10才补0
// num = num < 10 ? 0 + num : num
num = num >= 10 ? num : 0 + num
alert(num)
</script>
2.2.3 switch语句
使用场景: 适合于有多个条件的时候,也属于分支语句,大部分情况下和 if多分支语句 功能相同
注意:
- switch case语句一般用于等值判断, if适合于区间判断
- switchcase一般需要配合break关键字使用 没有break会造成case穿透
- if 多分支语句开发要比switch更重要,使用也更多
<script> switch (2) { case 1: console.log('您选择的是1') break // 退出switch case 2: console.log('您选择的是2') break // 退出switch case 3: console.log('您选择的是3') break // 退出switch default: console.log('没有符合条件的') } </script>
if 多分支语句和 switch的区别:
-
共同点
- 都能实现多分支选择, 多选1
- 大部分情况下可以互换
-
区别:
- switch…case语句通常处理case为比较确定值的情况,而if…else…语句更加灵活,通常用于范围判断(大于,等于某个范围)。
- switch 语句进行判断后直接执行到程序的语句,效率更高,而if…else语句有几种判断条件,就得判断多少次
- switch 一定要注意 必须是 === 全等,一定注意 数据类型,同时注意break否则会有穿透效果
- 结论:
- 当分支比较少时,if…else语句执行效率高。
- 当分支比较多时,switch语句执行效率高,而且结构更清晰。
2.3 循环语句
2.3.1 断点调试
作用:学习时可以帮助更好的理解代码运行,工作时可以更快找到bug
浏览器打开调试界面:按F12打开开发者工具,点到源代码一栏 ( sources ),
选择代码文件
2.3.2 while循环
使用场景:重复执行 指定的一段代码,while : 在…. 期间, 所以
while循环 就是在满足条件期间,重复执行某些代码。
语法:while (条件表达式) { // 循环体 }
循环三要素:变量起始值 终止条件 变量变化量(用自增或者自减)
<script>
// 1. 变量的起始值
let end = +prompt('请输入次数:')
let i = 1
// 2. 终止条件
while (i <= end) {
document.write('我要循环三次 <br>')
// 3. 变量的变化量
i++
}
</script>
循环练习题:
<script>
//1.页面输出1~100
// let i = 1
// while (i <= 100) {
// document.write(`这是第${i}个数<br>`)
// i++
// }
//2.计算从1加到100的总和并输出
// let i = 1
// let sum = 0
// while (i <= 100) {
// //sum = sum + i
// sum +=i
// i++
// }
// console.log(sum);
//3.计算1~100之间的所有偶数和
let i = 1
let sum = 0
while (i <= 100) {
//筛选偶数 如需要奇数的话 修改为 i % 2 !== 0
if (i % 2 === 0) {
sum = sum + i
}
i++
}
console.log(sum);
</script>
2.3.3 循环退出
循环结束:break:退出整个循环 中止整个循环,一般用于结果已经得到, 后续的循环不需要的 时候可以使用(提高效率)
continue:结束本次循环,继续下次循环 中止本次循环,一般用于排除或者跳过某 一个选项的时候