表达式
一个表达式可以产生一个值,有可能是运算,函数调用,
有可能是字面量,表达式可以放在任何需要值的地方。
语句
语句可以理解为一个行为,循环语句和判断语句就是典型的语句。
一个程序有很多个语句组成,一般情况下是分割成一个一个语句。
流程控制 由三种基本结构组成
顺序结构
从上到下执行的代码就是顺序结构,
程序默认就是由上到下顺序执行的。
分支结构
根据不同情况,执行对应代码。
例如:老师留了作业,做完就可以回家,没有做完就继续做。
循环结构
重复做一件事。
例如:在操场跑10圈,一圈一圈重复的来做,直到跑完10圈为止,
有一个条件,每跑完一圈都要想一下自己跑够10圈了没有。
分支结构
if 语句 if...else if...else
// if (/*条件表达式*/) { // 执行语句 } // if (/*条件表达式*/) { // 执行语句 } else { // 否则执行语句 } // if (/*条件表达式1*/) { // 成立执行语句 } else if (/*条件表达式2*/) { // 成立执行语句 } else if (/*条件表达式3*/) { // 成立执行语句 } else { // 否则执行语句 }
小案例1
// 求两个数的最大数 var n1 = 66; var n2 = 888; // 条件表达式 if (n1 > n2) { // 执行语句 console.log('n1:' + n1); } else { // 否执行语句 console.log('n2:' + n2); }
小案例2
// 判断一个数是偶数还是奇数 var n1 = 6; // 取余%2等于0,就是偶数 if (n1 % 2 === 0) { console.log('是偶数'); } else { // 否则执行语句 console.log('是奇数'); }
案例3
// 定义一个分数 var score = 88; // 条件1: 大于等90与小于等于100 if (score >= 90 && score <= 100) { console.log('A'); // 条件2:大于等于80与小于90 } else if (score >= 80 && score < 90) { console.log('B'); // 条件3:大于等于70与小于80 } else if (score >= 70 && score < 80) { console.log('C'); // 条件4:大于等于60与小于70 } else if (score >= 60 && score < 70) { console.log('D'); // 否则执行语句 } else { console.log('E'); } ////////////以上的简写 var score = 88; if (score >= 90) { console.log('A'); } else if (score >= 80) { console.log('B'); } else if (score >= 70) { console.log('C'); } else if (score >= 60) { console.log('D'); } else { console.log('E'); }
三元运算 表达式1?表达式2:表达式3
语法结构: 表达式1 ? 表达式2 : 表达式3
解释:当表达式1条件,成立执行表达式2,不成立执行表达式3
是对if...else语句的一种简化写法。
两个小案例认识三元运算:
// 判断是否满18岁 var age = 18; console.log(age >= 18 ? '已成年' : '未成年'); // 已成年 // 两个数中找最大值 var n1 = 66; var n2 = 88; var max = n1 > n2 ? n1 : n2; console.log(max);
switch语句 switch{case常量1: 语句 break;default: 语句 break;}
注意点1: 每个case块的break可以省略,代码会继续执行下一个case。
注意点2: switch语句在比较值时使用的是全等操作符(===),
因此不会发生类型转换(例如:字符串'10'不等于数值10)。
语法结构:
// 语法结构 switch (expression) { case 常量1: 语句; break; case 常量2: 语句; break; case 常量3: 语句; break; ........ case 常量n: 语句; break; default: 语句; break; }
小案例认识switch:
// 输出星期几 var day = 6; switch (day) { case 1: console.log('星期一'); break; case 2: console.log('星期二'); break; case 3: console.log('星期三'); break; case 4: console.log('星期四'); break; case 5: console.log('星期五'); break; case 6: console.log('星期六'); break; case 7: console.log('星期日'); break; default: console.log('不在星期范围内'); break; }
案例2
// 把百分制转换为ABCDE var score = 88; // 两位数转换成一位数 score = parseInt(score / 10); switch (score) { case 10: case 9: console.log('A'); break; case 8: console.log('B'); break; case 7: console.log('C'); break; case 6: console.log('D'); break; default: console.log('E'); break; }
最后的default类似于if语句最后的else,当以上条件都不成立才执行
循环解构
while循环
while (表达式) {
// 循环体
}
// 打印1到100之间的数 var number = 1; while (number <= 100) { console.log(number); // 每执行循环体一次,number自身就+1 number++; }
当表达式的条件成立则执行循环体。
do...while循环
do {
// 循环体
} while (表达式)
// 先执行一次循环体再判断条件 var number = 1; do { // 循环体 console.log(number); number++; } while (number > 2) // 条件不成立就停止执行循环体
先执行一次循环体,再判断表达式,如果表达式条件成立则继续执行循环体。
for 循环
for (初始化表达式; 比较表达式; 自增表达式) {
// 循环体
}
// 打印1到10之间的数字 for (var i = 1; i <= 10; i++) { // 循环体 console.log(i); }
执行顺序:初始化表达式>>>比较表达式>>>循环体>>>自增表达式
初始化表达式只执行一次!
练习例子
在控制台输出正方形:
// 打印一个10*10的正方形 var str = ''; // 外层循环控制行数 for (var i = 0; i < 10; i++) { // 内层循环控制每行中字符的个数 for (var j = 0; j < 10; j++) { // 拼接正方形 str = str + '* '; // 以上的简写str += '* '; } // 控制换行 str += ' '; } // 打印 console.log(str);
打印九九乘法表:
// 拼接完的字符串 var str = ''; // 外层循环控制行数 for (var i = 1; i <= 9; i++) { // 内层循环控制每行有几组 for (var j = i; j <= 9; j++) { // 拼接 str += i + '*' + j + '=' + i * j + ' '; } // 换行 str += ' '; } console.log(str);
打印直角三角形:
var str = ''; for (var i = 0; i < 9; i++) { // 内层循环与外层循环建立联系 for(var j = i; j < 9; j++) { str += '* '; } // 换行 str += ' '; } console.log(str);
求1~100之间所有数的乘积:
// 接收这个乘积 var num = 1; for (var i = 1; i <= 100; i++) { num *= i; } console.log(num);
break和continue
break:终止循环
continue:跳出当次循环,继续下一次循环
break例子:求整数50到200的第一个能被7整除的数
for (var i = 50; i <= 200; i++) { if (i % 7 === 0) { console.log(i); // 56 // 终止循环 break; } }
continue例子:求整数1到100的累加值,但要跳过所有个数为3的数
// 总数 var sum = 0; for (var i = 1; i <= 100; i++) { // 判断是否是个数为3的数 if (i % 10 === 3) { // 跳出当次循环 continue; } else { // 累加 sum += i; } } console.log(sum); // 4570
job
有本金10000,年利率是千分之一,计算5年后获得的本金是多少
// 本金 var money = 10000; // 利率 var rate = 0.003; // 累加5次 for (var i = 1; i <= 5; i++) { money += money * rate; } console.log(money); // 10150.90270405243
兔子规律:1,1,2,3,5,8,13,21..十个月后有多少只
// n1和n2是两个月的兔子的数量 var n1 = 1; var n2 = 1; // n3变量的值是n1+n2的结果 var n3; // 由于两个月数量已知,所以我们从第三个月开始算起 for (var i = 3; i <= 10; i++) { n3 = n1 + n2; n1 = n2; n2 = n3; } console.log(n3);