js流程控制

1、表达式

一个表达式可以产生一个值,有可能是运算、函数调用、也有可能是字面量(如5)。表达式可以放在任何需要值的地方。

2、语句

语句可以理解为一个行为,循环语句和判断语句就是典型的语句。一个程序有很多个语句组成,一般情况下,以;分割一个一个的语句。

3、流程控制

程序的三种基本结构。
(1)、顺序结构。即代码从上到下依次执行,默认就是这样执行的。
(2)、分支结构(选择情况)。根据不同的情况执行不同的代码,比如作业做完了就可以打游戏,没有做完就要做作业。
(3)、循环结构。即重复做一件事情,如去体育课老师要求操场跑10圈,每跑一次心里想着是否跑够10圈,直到跑完10圈停止。

4、分支结构
(1)if语句。

//简单的条件语句
if (/* 条件表达式为真 */) {
  // 执行语句
}

// 稍微复杂一点的条件语句
if (/* 条件表达式为真 */){
  // 成立执行语句
} else {
  // 否则执行语句
}


// 多个条件的条件语句
if (/* 条件1 */){
  // 成立执行语句
} else if (/* 条件2 */){
  // 成立执行语句
} else if (/* 条件3 */){
  // 成立执行语句
} else {
  // 最后默认执行语句
}

案例

(1)、求两个数的最大数
(2)、判断一个数是偶数还是奇数
(3)、分数转换,把百分制转换成ABCDE <60 E 60-70 D 70-80 C 80-90 B 90 - 100 A

// (1) 求两个数的最大值
var num1 = 2, num2 = 5;
if (num1 > num2) {
    console.log(num1);
}else {
    console.log(num2);
}

// (2)判断一个数是偶数还是奇数
var num = 5;
if (num % 2 === 0) {
    console.log(num+'是偶数');
}else {
    console.log(num+'是奇数');
}

// (3)分数转换,把百分制转换成ABCDE   <60  E  60-70 D  70-80 C  80-90 B  90 - 100 A
var score = 90;
if (score < 60){
    console.log('E');
}else if (score >= 60 && score <70){
    console.log('D');
}else if (score >= 70 && score <80){
    console.log('C');
}else if (score >= 80 && score <90){
    console.log('B');
}else{
    console.log('A');
}

// 等同于以下写法
var score = 90;
if (score >= 90){
    console.log('A');
}else if(score >= 80){
    console.log('B')
}else if(score >= 70){
    console.log('D')
}else if(score >= 60){
    console.log('D')
}else{
    console.log('E')
}

(2)、三元运算符
语法:表达式1 ? 表达式2 : 表达式3
当表达式1成立,返回表达式2的值,当表达式1不成立,返回表达式3的值。
是对if…else…语句的一种简化写法。
案例:

// (1)、是否年满18岁。当年龄超过18返回成年,否则返回未成年。
var age = 17;
console.log(age >= 18 ? '成年' : '未成年');


// (2)、获取两个数中的最大值。
var num1 = 3, num2 = 6;
console.log(num1 > num2 ? num1 : num2); // 值为6

// 还可以将其赋值为一个变量
var max = num1 > num2 ? num1 : num2;
console.log(max);   // 值为6

(3)、switch语句
语法格式:

switch (expression) {
  case 常量1:
    语句;
    break;
  case 常量2:
    语句;
    break;
  case 常量3:
    语句;
    break;
  case 常量3:
    语句;
    break;
  default:
    语句;
    break;
}

var day = 5;
switch (day){
    case ':
        console.log('星期一');
        break;
    case 2:
        console.log('星期二');
        break;
    default:
        console.log('不在星期一和星期二范围内');
        break;
}   // 输出为不在星期一和星期二范围内

注意:
(1)、switch语句中判断语句使用的是===。
(2)、switch语句中不写break不会报错,但是会继续往下执行。

5、布尔类型的隐式转换。
流程控制语句会把后面的值隐式转换成布尔类型。

// 显式转换
var num = 123;
console.log(Boolean(num));  // true

// 隐式转换 即不调用Boolean方法,自动转换为布尔类型。
if (num){
    console.log('hello')
}   // 值为hello

// 转换为false的五种情况  0  ''(空字符串)  NaN null undefined

var msg;
if (msg){
    console.log('hello')
}  // 定义变量没有赋值时值是undefined,所以不输出

var str = '123';
var isOk = !str;
console.log(isOk);  // false
var isOk = !!str;
console.log(isOk);  // true

6、循环结构
在javascript中,循环语句有三种,while、do…while、for循环。
(1)、while语句
基本语法

// 当循环条件为true时,执行循环体,
// 当循环条件为false时,结束循环。
while (循环条件) {
  //循环体
}

如:计算1-100之间所有数的和

// 初始化变量
var i = 1;
var sum = 0;
// 判断条件
while (i <= 100) {
  // 循环体
  sum += i;
  // 自增
  i++;
}
console.log(sum);   // 5050

(2)、do…while语句
do…while循环和while循环非常像,二者经常可以相互替代,但是do…while的特点是不管条件成不成立,都会执行一次。
基础语法:

do {
  // 循环体;
} while (循环条件);

如:

// 计算1-100之间的数字的和
var i = 1;
varsum = 0;
do {
    sum += i;
    i++;
}while(i<=100);
console.log(sum);  // 5050

案例

// (1)、求100以内所有3的倍数的和
var i =1;
var sum = 0;
do {
    if(i%3 === 0){
        sum += i;
    }
    i++;
}while(i<=100);
console.log(sum);  // 1683

// (2)、使用do-while循环:输出询问“我爱你,嫁给我吧?”,选择“你喜欢我吗?(y/n):",如果输入为y则打印”我们形影不离“,若输入为n,则继续询问
do {
    var msg= prompt('我爱你,嫁给我吧?','你喜欢我吗?(y/n):');
}while(msg !== 'y');
console.log('我们形影不离!')

(3)for循环语句
while和do…while一般用来解决无法确认次数的循环。for循环一般在循环次数确定的时候比较方便。
语法:

// for循环的表达式之间用的是;号分隔的,千万不要写成,
for (初始化表达式1; 判断表达式2; 自增表达式3) {
    // 循环体4
}

如:

// for循环实现打印1-100之间的所有数字
for (var i=0;i<=100;i++){
    console.log(i);
}

案例:

// 控制台打印正方形

var str = ''
//  外层循环控制输出多少行
for (var j=0;j<10;j++){
    // 控制一行输出多少个*
    for (var i=0;i<10;i++){
        str = str + '* ';
    }
    str = str + '\n';
}
console.log(str);

// 控制台打印三角形

var str1 = ''
// 外层循环控制输出的行数
for (var m=0;m<10;m++) {
    // 内存循环控制输出*的个数
    for (var n=m;n<10;n++){
         str1 = str1 + '* ';
    }
    str1 = str1 + '\n';
}
console.log(str1);


// 控制台打印九九乘法表

str2 = ''
for (var k=1;k<10;k++) {
    // 内存循环控制输出*的个数
    for (var l=k;l<10;l++){
         str2 += k + '*' +  l + '='  + k * l + '\t';
    }
    str2 = str2 + '\n';
}
console.log(str2);

7、continue 和 break
break:立即跳出整个循环,即循环结束,开始执行循环后面的内容。
continue:立即跳出当前循环,继续下一次循环。

案例

// 求整数50-200之间的第一个能被7整除的数
for (var i =50;i<= 200;i++){
    if (i % 7 === 0) {
        console.log(i);  // 56
        break;
    }
}

// 求整数1-100的累加值,但要求跳过所有个位为3的数。
var sum = 0;
for (var j=0;j<=100;j++){
    if (j % 10 === 3){
        continue;
    }
    sum += j;
}
console.log(sum);  // 4570

8、调试
调试的目的是确定错误的原因和位置。
错误:语法错误、逻辑错误。
过去调试javascript的方式:alert()和console.log()
断点调试:

浏览器中按F12–>sources–>找到需要调试的文件–>在程序的某一行设置断点。
Watch: 监视,通过watch可以监视变量的值的变化,非常的常用。
F10: 程序单步执行,让程序一行一行的执行,这个时候,观察watch中变量的值的变化。
F8:跳到下一个断点处,如果后面没有断点了,则程序执行结束。

以及debugger关键字。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值