流程控制基本概念

  • 默认情况下,程序的运行流程是这样的:运行程序后,系统会按书写从上至下顺序执行程序中的每一行代码,但是这并不能满足我们所有的开发需求

1.png
  • 实际开发中, 我们需要根据不同的条件执行不同的代码或者重复执行某一段代码
  • 为了方便我们控制程序的运行流程,JavaScript提供3种流程结构,不同的流程结构可以实现不同的运行流程。这3种流程结构分别是顺序、选择、循环三种基本控制结构构造.

    • 顺序结构:默认的流程结构。按照书写顺序从上至下执行每一条语句。

    • 选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码。

    • 循环结构:在给定条件成立的情况下,反复执行某一段代码。


选择结构-if基本概念

.if第一种形式

  • 表示如果条件表达式,执行语句块1,否则不执行。
  1. if(条件表达式)
  2. {
  3. 语句块1
  4. }
  5. 后续语句;
  • 示例:
  1. if(age > 18)
  2. {
  3. console.log("开网卡");
  4. }

2.if第二种形式

  • 如果条件表达式,则执行语句块1,否则执行语句块2
  1. if(条件表达式)
  2. {
  3. 语句块1
  4. }else{
  5. 语句块2
  6. }
  • 示例:
  1. if(age > 18)
  2. {
  3. console.log("开网卡");
  4. }else{
  5. console.log("喊你妈来");
  6. }
  • 特点:

    • if和else后面的代码块({})只有一个会被执行

3.if第三种形式

  • 如果条件表达式1,则执行语句块1,否则判断条件表达式2,如果为真执行语句块2,否则再判断条件表达式3,如果真执行语句块3, 当表达式1、2、3都不满足,会执行最后一个else语句。
  1. if(条件表达式1)
  2. {
  3. 语句块1
  4. }else if(条件表达式2){
  5. 语句块2
  6. }else if(条件表达式3){
  7. 语句块3
  8. }else{
  9. 语句块4
  10. }
  1. javascript学习群499415298
  • 示例:
  1. if(age>18)
  2. {
  3. console.log("给网卡");
  4. }else if(age>25){
  5. console.log("给名片");
  6. }else if(age>40){
  7. console.log("给房卡");
  8. }else{
  9. console.log("给好人卡");
  10. }
  • 特点:

    • 这么多大括号中只有一个大括号中的内容会被执行
    • 当执行到后面条件的时候证明前面的条件不满足
    • else if可以只有一个, 也可以有多个, 但是都必须添加在if和else之间

  1. 选择结构-if注意点
  • 如果只有一条语句时if后面的大括号可以省略
  1. if(age > 18)
  2. console.log("开网卡");
  • 注意点:

    • 受到if管制的只有紧跟其后的那条语句
    • 在企业开发中尽量不要省略大括号
      1. if(false)
      2. console.log("语句1");
      3. console.log("语句2"); // 语句2会被输出

  • 分号“;”也是一条语句, 空语句
  1. if(10 > 2);
  2. {
  3. console.log("10 > 2");
  4. }
  5. // 输出结果: 10 > 2, if管制的紧跟其后的那个分号
  6. // 如上语句相当于
  7. if(10 > 2)
  8. ;
  9. {
  10. console.log("10 > 2");
  11. }
  12. // 如上语句相当于
  13. if(10 > 2) {
  14. ;
  15. }
  16. // {}在JS中仅仅代表告诉系统里面的语句是一个整体, 没有别的用途,不会影响代码的执行
  17. {
  18. console.log("10 > 2");
  19. }

  • if else是一个整体, else匹配if的时候匹配离它最近的一个if
  1. if(0)
  2. if(1)
  3. console.log("A");
  4. else // 这个else会匹配上面的 if(1)
  5. console.log("B");
  6. else // 这个else会匹配上面的 if(0)
  7. if (1)
  8. console.log("C"); // 最终输出C
  9. else
  10. console.log("D");

  • 对于非Boolean类型的值,会先转换为Boolean类型后再判断
  1. if (0) {
  2. console.log("123\n"); // 不会被执行
  3. }

  • 判断变量与常量问题

    • 但凡遇到比较一个变量等于或者不等于某一个常量的时候,把常量写在前面
  1. // if(a = 0) // 错误写法, 但不会报错
  2. /*
  3. 本来是先判断变量a存储的值是否等于0,
  4. 但是如果不小心写成a=0,代表把0存储到a中.
  5. 为了避免这种问题判断是否相等时把常量写前面,
  6. 因为等号左边只能是变量, 所以如果少写一个等号会报错
  7. */
  8. if (0 == a) {
  9. console.log("a的值是0\n");
  10. }else{
  11. console.log("a的值不是0\n");
  12. }

  • if语句可以嵌套使用
  1. var num = 8;
  2. if (num >= 5)
  3. {
  4. if(num <= 10)
  5. {
  6. console.log("一个5~10之间的数")
  7. }
  8. }

选择结构-if练习

  • 从键盘输入一个整数,判断其是否是偶数,如果是偶数就输出YES,否则输出NO;
  1. // 1.定义一个变量保存用户输入的整数
  2. var temp;
  3. // 2.利用window.prompt()接收用户输入数据
  4. // window.prompt返回给我们的是一个字符串, 需要转换为Number
  5. temp = +(window.prompt("请输入一个整数"));
  6. // 3.对用户输入的数据进行安全校验
  7. if(isNaN(temp)){
  8. alert("你是SB吗?");
  9. }else{
  10. // 3.判断用户输入的数据是否是偶数, 然后根据判断结果输出YES/NO
  11. /*
  12. if(temp % 2 == 0){
  13. alert("YES");
  14. }else{
  15. alert("NO");
  16. }
  17. */
  18. (temp % 2 == 0) ? alert("YES") : alert("NO");
  19. }

  • 接收用户输入的1~7的整数,根据用户输入的整数,输出对应的星期几
  1. // 1.定义变量保存用户输入的数据
  2. var day;
  3. // 2.利用window.prompt()接收用户输入数据
  4. day = +(window.prompt("输入的1~7的整数"));
  5. // 3.判断当前是星期几
  6. if(day == 1){
  7. console.log("星期一");
  8. }else if(day == 2){
  9. console.log("星期二");
  10. }else if(day == 3){
  11. console.log("星三");
  12. }else if(day == 4){
  13. console.log("星期四");
  14. }else if(day == 5){
  15. console.log("星期五");
  16. }else if(day == 6){
  17. console.log("星期六");
  18. }else if(day == 7){
  19. console.log("星期日");
  20. }else{
  21. console.log("滚犊子");
  22. }
  1. javascript学习群499415298

  • 接收用户输入的一个整数month代表月份,根据月份输出对应的季节
  1. // 1.定义变量保存用户输入的数据
  2. var month;
  3. // 2.利用window.prompt()接收用户输入数据
  4. month = +(window.prompt("请输入一个1-12的月份"));
  5. // 3.数据安全校验
  6. if(isNaN(month)){
  7. alert("火星SB?");
  8. }else{
  9. // 4.根据输入的数据判断输出对应的月份即可
  10. if(month >= 3 && month <= 5){
  11. alert("春季 ");
  12. }else if(month >=6 && month <= 8){
  13. alert("夏季");
  14. }else if(month >=9 && month <= 11){
  15. alert("秋季");
  16. }else if(month == 12 || month == 1 || month == 2){
  17. alert("冬季");
  18. }else{
  19. alert("火星季节");
  20. }
  21. }
  1. // 1.定义变量保存用户输入的数据
  2. var month;
  3. // 2.利用window.prompt()接收用户输入数据
  4. month = +(window.prompt("请输入一个1-12的月份"));
  5. // 3.数据安全校验
  6. if(isNaN(month)){
  7. alert("火星SB?");
  8. }else{
  9. // 4.根据输入的数据判断输出对应的月份即可
  10. if(month < 1 || month > 12){
  11. alert("火星季节");
  12. }else if(month >= 3 && month <= 5){
  13. alert("春季 ");
  14. }else if(month >=6 && month <= 8){
  15. alert("夏季");
  16. }else if(month >=9 && month <= 11){
  17. alert("秋季");
  18. }else{
  19. alert("冬季");
  20. }
  21. }
  1. // 1.定义变量保存用户输入的数据
  2. var month;
  3. // 2.利用window.prompt()接收用户输入数据
  4. month = +(window.prompt("请输入一个1-12的月份"));
  5. // 3.数据安全校验
  6. if(isNaN(month)){
  7. alert("火星SB?");
  8. }else{
  9. // 4.根据输入的数据判断输出对应的月份即可
  10. if(month == 12 || month == 1 || month == 2){
  11. alert("冬季"); // 没有进入, 剩下的必然是3-11
  12. }else if(month >=9){
  13. alert("秋季"); // 没有进入, 剩下的必然 3-8
  14. }else if(month >=6){
  15. alert("夏季"); // 没有进入, 剩下的必然 3-5
  16. }else if(month >= 3){
  17. alert("春季 ");
  18. }else{ // 12 1 2
  19. alert("火星季节");
  20. }
  21. }

  • 从键盘输入2个整数,判断大小后输出较大的那个数
  1. // 1.定义变量保存三个整数
  2. var a, b;
  3. // 2.利用window.prompt接收用户输入的数据
  4. a = +(window.prompt("请输入内容"));
  5. b = +(window.prompt("请输入内容"));
  6. // 3.利用if进行两两比较
  7. if(a > b){
  8. console.log(a);
  9. }else{
  10. console.log(b);
  11. }
  12. /*
  13. 三元运算符好处:可以简化if else代码
  14. 弊端 :因为是一个运算符所以运算完必要要有一个结果。
  15. 简单用三元 复杂用if(阅读性好)
  16. */
  17. console.log(a > b? a: b);

  • 从键盘输入3个整数,排序后输出

    • 如下做法代码严重没有扩展性,数值越多代码越多
  1. // 1.定义变量保存三个整数
  2. var a, b, c;
  3. // 2.利用window.prompt接收用户输入的数据
  4. a = +(window.prompt("请输入内容"));
  5. b = +(window.prompt("请输入内容"));
  6. c = +(window.prompt("请输入内容"));
  7. // 方式1 写出所有方式
  8. if (a >= b && b >=c) {
  9. console.log(a, b, c);
  10. }else if (a >= c && c >= b) {
  11. console.log(a, c, b);
  12. }else if (b >= a && a >= c) {
  13. console.log(b, a, c);
  14. }else if (b >= c && c >= a) {
  15. console.log(b, c, a);
  16. }else if (c >= a && a >= b) {
  17. console.log(c, a, b);
  18. }else if (c >= b && b >= a) {
  19. console.log(c, b, a);
  20. }
  • 如下做法将来可以利用循环结构简化代码

    • 选择排序, 每排完一次最值出现在第一位

  1. // 1.定义变量保存三个整数
  2. var a, b, c;
  3. // 2.利用window.prompt接收用户输入的数据
  4. a = +(window.prompt("请输入内容"));
  5. b = +(window.prompt("请输入内容"));
  6. c = +(window.prompt("请输入内容"));
  7. // 方式2 选择排序
  8. var temp;
  9. if (a > b) {
  10. temp = a;
  11. a = b;
  12. b = temp;
  13. }
  14. if (a > c) {
  15. temp = a;
  16. a = c;
  17. c = temp;
  18. }
  19. if ( b > c) {
  20. temp = b;
  21. b = c;
  22. c = temp;
  23. }
  24. console.log(a, b, c);
  • 冒泡排序, 每排完一次最值出现在最后一位
  1. // 1.定义变量保存三个整数
  2. var a, b, c;
  3. // 2.利用window.prompt接收用户输入的数据
  4. a = +(window.prompt("请输入内容"));
  5. b = +(window.prompt("请输入内容"));
  6. c = +(window.prompt("请输入内容"));
  7. // 方式3 冒泡排序
  8. var temp;
  9. if (a > b) {
  10. temp = a;
  11. a = b;
  12. b = temp;
  13. }
  14. if (b > c) {
  15. temp = b;
  16. b = c;
  17. c = temp;
  18. }
  19. if ( a > b) {
  20. temp = a;
  21. a = b;
  22. b = temp;
  23. }
  24. console.log(a, b, c);

  • 石头剪子布实现
  1. // 定义 0.剪刀 1.石头 2.布
  2. // 1、定义变量 玩家和电脑
  3. var player,computer = 0;
  4. // 2、让电脑先出拳
  5. var temp = Math.random() * 3;
  6. // 3、用户出拳
  7. var player = window.prompt("请出拳:0.剪刀 1.石头 2.布");
  8. // 数据合法性的校验
  9. if (player<0||player>2) {
  10. window.prompt("请重新出拳:0.剪刀 1.石头 2.布");
  11. }else{
  12. // 4、判断比较 //先判断用户赢的情况
  13. if((player==0&&computer==2)||
  14. (player==1&&computer==0)||
  15. (player==2&&computer==1)){
  16. window.alert("我靠,你赢了!\n");
  17. }else if((computer==0&&player==2)||
  18. (computer==1&&player==0)||
  19. (computer==2&&player==1)){
  20. window.alert("很遗憾,你输了!\n");
  21. }else{
  22. window.alert("平局\n");
  23. }
  24. }
  1. javascript学习群499415298

  1. 如果想看到更加系统的文章和学习方法经验可以关注的微信号:‘web前端EDU’或者‘webxh5’关注后回复‘2017’可以领取一套完整的学习视频

JavaScript基础-流程控制-if的更多相关文章

  1. JavaScript基础流程控制(3)

    day51 参考:https://www.cnblogs.com/liwenzhou/p/8004649.html for循环 while循环 三元运算 a>b条件成立,选a,不成立选b

  2. 小白学 Python(8):基础流程控制(下)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  3. Java编程基础——流程控制

    Java编程基础——流程控制 摘要:本文主要介绍Java编程中的流程控制语句. 分类 流程控制指的是在程序运行的过程中控制程序运行走向的方式.主要分为以下三种: 顺序结构:从上到下依次执行每条语句操作 ...

  4. JavaScript的流程控制

    JavaScript的流程控制 1.if...else if...else... 2.while 3.for 4.forEach 5.for...in... 完整代码如下: <!DOCTYPE ...

  5. Python基础—流程控制

    一.Python流程控制 计算机程序在解决某个具体问题时,包括三种情形,即顺序执行所有的语句.选择执行部分的语句和循环执行部分语句,这正好对应着程序设计中的三种程序执行结构流程:顺序结构.选择结构和循 ...

  6. 黑马程序员——C语言基础 流程控制 选择结构和循环结构

    ---恢复内容开始--- Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)流程控制 1> 顺序结构:默认的流程 ...

  7. javascript之流程控制 和函数的容易忽略点

    1.流程控制 1> for in  仅用于 对象的遍历: var box={ "name":'小红', 'age':18, 'height':165 }; for(var b ...

  8. Java基础-流程控制(04)

    在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说程序的流程对运行结果有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过控制语句的执行顺序来实现我 ...

  9. python基础-->流程控制-->分支结构-->单项分支-->双向分支

    # ###流程控制 ''' 流程:代码执行过程 流程控制:对代码执行过程的管控 顺序结构:代码默认从上到下依次执行 分支结构:对代码执行过程的管控 循环机构: while for ..in.... 分 ...

随机推荐

  1. DataReader To List

    用了一段时间的Dapper,感觉Dapper比Ado.net好的地方就是转换成实体,到处查资料,写了以下方法,直接可以用. using (var conn = new SqlConnection(&q ...

  2. CentOS 6.5 下安装 Redis 2.8.7(转载)

    wget http://download.redis.io/redis-stable.tar.gz tar xvzf redis-stable.tar.gz cd redis-stable make ...

  3. Android - service and thread

    服务(Service)是Android中实现后台程序运行的方案.适合执行那些不需要和用户交互并长期执行的任务. 服务并非运行在一个独立的进程中,而是依赖于创建服务时所在的应用程序.当某个应用程序进程被 ...

  4. 玲珑杯 Round #11 (1001 1004 1007)

    比赛链接 直接贴代码.. #include<bits/stdc++.h> using namespace std; typedef long long LL; int main() { L ...

  5. 基于腾讯Centos7云服务器搭建SVN版本控制库

    基于腾讯Centos7云服务器搭建SVN版本控制库 最近在和小伙伴组队参加一个关于人工智能的比赛,无奈不知道怎么处理好每个人的代码托管问题,于是找到了晚上免费svn托管服务器的服务,但是所给的免费空间 ...

  6. man rsync翻译(rsync命令中文手册)

    本文为命令rsync的man文档翻译,几乎所有的选项都翻译了,另外关于筛选规则部分只翻译了一部分.由于原文很多地方都比较啰嗦,所以译文中有些内容可能容易让国人疑惑,所以我个人在某些地方加上了注释.若有 ...

  7. 2、微信小程序之弹幕的实现(无后台)

    对弹幕功能主要利用环信来实现的,读者也许对环信这个东西很陌生,请先自行了解这环信再来看这文章. 环信开发文档:http://docs.easemob.com/im/400webimintegratio ...

  8. 安装Scala-2.11.7——集群学习日记

    前言 在安装Spark之前,我们需要安装Scala语言的支持.在此我选择的是scala-2.11.7版本. scala-2.11.7下载 为了方便,我现在我的SparkMaster主机上先安装,把目录 ...

  9. Struts2 动态调用方法

    struts2动态调用方法有两种方式 方式一:用通配符进行调用: Action方法: package com.bjyinfu.struts.actions; public class CatchDyn ...

  10. Java基础之接口与抽象类及多态、内部类

    final关键字 被其修饰的类,不能被继承. 被其修饰的方法,不能被覆盖. 被其修饰的变量,是一个常量,不能被修改,所以定义时必须初始化(和C++的const类似). 一般有final,会搭配stat ...