算数运算符
算数符优先级:先乘除后加减
% —> 取余运算符,余数为零就说明这个数能被整除
1、前置递增运算符:(自增自减运算符只能和变量搭配使用)
eg:(先+1,后返回值)
let age = 10;
++age; // 类似于age = age +1
console.log(age) // 11
2、后置递增运算符:
eg:
let num = 20;
num ++; // --> num = num + 1
console.log(num); // 21
三元表达式(作用与if…else…相同)
语法结构: 条件表达式 ? 表达式1 : 表达式2
执行思路: 如果条件表达式为结果为真则执行表达式1,结果为假则执行表达式2
let num = 10;
num > 9 ? console.log('num大于9') : console.log('num小于9') // num大于9
分支流程控制:Switch语句
执行思路: 利用表达式的值与case后面的选项值相匹配,匹配上则执行该case里面的语句,
语法结构:
//表达式最好设置成一个变量
//数值与数据类型要一致
//如果没有break,则全部case都会执行一遍
switch(表达式) {
case value1:
执行语句1;
break;
case value2:
执行语句2;
break;
......
default: // 相当于else语句
执行最后的语句;
}
switch语句小案例:
let fruit = prompt('请输入你要查询的水果名称:')
switch (fruit) {
case "苹果":
alert('苹果:2.4¥/500g')
break;
case "香蕉":
alert('香蕉:1.1¥/500g')
break;
case "橙子":
alert('橙子:2.3¥/500g')
break;
default:
alert('没有此水果')
}
switch语句和if…else if…语句的区别:
1、一般情况下,可替换
2、switch语句通常处理case为比较确定值的情况,而if…else…语句更加灵活,常用于范围判断。
3、switch语句进行条件判断后直接执行到程序的条件语句,效率更高,而if…else…则需要判断多次
4、当分支较少时,if…else…语句的执行效率更高,反之,switch语句的执行效率更高。
循环
1、for循环
for(初始化变量; 条件表达式; 操作表达式){
// 循环体
}
小案例:计算学生的平均成绩
let stu_num = prompt('请输入学生人数:')
let sum_score = 0
for (var i = 1; i <= stu_num; i++) {
let stu_score = prompt('请输入学生' + i + '的成绩:')
// 从prompt输出的内容都是字符串,要进行操作需要转换为相应类型
sum_score += parseFloat(stu_score)
}
console.log(sum_score)
let average = sum_score / stu_num
console.log(average)
alert('学生的平均成绩是:' + average)
双重for循环小案例:根据输入的行数和列数打印*
let rows = prompt('请输入行数:')
let cols = prompt('请输入列数:')
let str = ''
for (let i = 1; i <= rows; i++) {
for (let j = 1; j <= cols; j++) {
str = str + "*"
}
str += '\n'
}
console.log(str)
小案例:打印倒三角形
let str = ''
for (let i = 1; i <= 7; i++) {
for (let j = i; j <= 7; j++) {
str = str + "*"
}
str += '\n'
}
console.log(str)
小案例:打印九九乘法表
let str = '';
for (let i = 1; i <= 9; i++) {
for (let j = 1; j <= i; j++) {
str = str + ' ' + i + '*' + j + '=' + i * j
}
str += '\n'
}
console.log(str)
2、while循环
执行思路: 当条件表达式结果为true,则执行循环体,否则,退出循环
语法结构:
while(条件表达式){
// 循环体
}
小案例:
var mess = prompt('你爱我吗:')
while (mess != '我爱你') {
mess = prompt('你爱我吗:')
}
alert('我也爱你哦')
3、do…while循环
语法结构:
do{
// 循环体
} while(条件表达式)
执行思路: do while先执行一次循环体,再判断条件表达式结果是否为true,true则继续执行代码,否则退出循环,循环体至少循环一次
冒泡排序(数组排序)
案例:将数组从小到大排序
// 数组排序:
let arr = [5, 4, 3, 2, 1]
for (let i = 0; i <= arr.length - 1; i++) {
for (let j = 0; j <= arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j] // 缓存
arr[j] = arr[j + 1]
arr[j + 1] = temp
}
}
}
console.log(arr)
函数
函数:就是封装一段可重复执行调用的代码块,目的:让代码可重复使用
arguments的使用: 当不知道用户会传递过来多少个实参时可以用arguments (数据类型:伪数组) 存储实参。
arguments里面存储了所有传递过来的实参。
伪数组: 并不是真正意义上的数组:
特性:1、具有数组的length属性
2、按照索引方式进行存储
3、没有真正数组的一些方法 eg:pop()、push()
// arguments的使用
function fn() {
console.log(arguments)
console.log(arguments.length) // 获取长度
console.log(arguments[2]) //索引获取数据
}
fn(1, 2, 3, 4)