流程控制

1 代码块

简介:
程序是由一条一条语句构成的,语句是按照自上向下的顺序一条一条执行的,在JS中可以使用{}来为语句进行分组
同一个{}中的语句我们称为是一组语句,他们要么都执行,要么都不执行
使用:
JS中的代码块,只具有分组的作用,没有其他的用途
代码块里面的内容,在外部是完全可见的

2 流程控制语句

基本概念:
默认情况下,程序的运行流程是这样的:运行程序后,系统会按书写从上至下顺序执行程序中的每一行代码,但是这样并不能满足我们所有的开发需求
实际开发中,我们需要根据不同的条件执行不同的代码或者重复执行某一段代码
为了方便我们控制程序的运行流程,JavaScript提供3种流程结构,不同的流程结构可以实现不同的运行流程。分别是顺序、选择、循环三种基本控制结构构造
1)顺序结构:默认的流程结构。按照书写顺序从上至下执行每一条语句
2)选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码
3)循环结构:在给定条件成立的情况下,反复执行某一段代码

2.1 if

定义:
如果表达式为真,执行语句块1,否则执行语句块2
格式:

if(条件表达式)  {
  语句块1
}
else  {
  语句块2
}

如果条件表达式1为真,则执行语句块1,否则判断条件表达式2,如果为真执行语句块2,否则再判断条件表达式3,如果真执行语句块3,当表达式123都不满足,会执行最后一个else语句

var age=35;
if(age>40) {
    console.log('老年人');
}else if(age>20){
    console.log('中年人')
}else if(age>12){
    console.log('成年人');
}else {
    console.log('未成年人');
}

注意点:
1)如果只有一条语句时,if后面的大括号可以省略(不建议省略)
2)分号“;”也是一条语句,空语句

if(1>0);  //if已经结束,后面的不再属于if
{
语句块1
}

3)if else是一个整体,else匹配if的时候匹配离他最近的一个if
4)对于非Boolean类型的值,会先转换为Boolean类型后再判断
5)判断变量与字面量的问题
但凡遇到比较一个变量等于或者不等于某一个字面量的时候,把字面量写在前面
本来是先判断变量a储存的值是否等于0,
但是如果不小心写成了a=0,代表把0储存到a中(赋值)
为了避免这种问题,判断是否相等时把字面量写在前面
因为等号左边只能是变量,所以如果少些一个等号会报错

6)if语句可以嵌套使用

var num=20;
if(num>=10 {
    if(num<=30)  {
        console.log('满足条件!');
    }
}

2.2 Switch

Switch和if一样都属于选择结构,都会对给定的条件进行判断,再根据判断结果来决定执行哪一段代码
基本格式:

switch(条件表达式) {
    case 表达式:
        语句1;
        break;
    case 表达式:
        语句2;
        break;
    case 表达式n:
        语句n;
        break;
    default:
        语句n+1;
        break;
}

含义:
1)计算条件表达式的值。并逐个与case后面表达式的结果值比较
2)当条件表达式的值与某个表达式的值全等时,执行其后的语句,并且不会再与其他 case进行比较
3)如果条件表达式的值与所有的case后的表达式均不相同时,则执行default后的语句
示例:

var num=3;
switch(num) {
    case 1 :
        console.log('壹');
        break;
    case 2 :
        console.log('贰');
        break;
    case 3 :
        console.log('叁');    //输出“叁”
        break;
      default:
        console.log('其他');
        break;
}

注意事项:
1)case全等与问题:
JavaScript中case判断是否相等时是全等于(===),而不是等于(==),也就是说即会判断类型是否相等又会判断值是否相等
case后可以是字面量也可以是变量
2)表达式判断问题:判断时会先计算表达式的值,再判断
3)case的穿透问题:switch里面的case只要匹配一次其他的都会失效,包括default
case语句最后增加的break语句,使每一次执行之后均可跳出switch语句,从而避免输出不应有的结果
4)default的位置问题:
default可以省略
default语句可以写在switch语句中的任意位置

案例:

//根据输入成绩判断等级
var num=window.prompt('请输入您的分数:');
switch(num= parseInt(num/10)) {
    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;
}

if语句和switch语句的选择:
1)分支比较多且无穷尽时最好用if,其他情况可以视情况而定
2)如果数据量不是很大,并且数据是固定的可以用switch
3)理论上switch的效率比if高
4)switch的弊端
判断用户输入的数是否大于100
if很容易,switch很麻烦

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 210,978评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,954评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,623评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,324评论 1 282
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,390评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,741评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,892评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,655评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,104评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,451评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,569评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,254评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,834评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,725评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,950评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,260评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,446评论 2 348

推荐阅读更多精彩内容

  • 顺序结构:按书写顺序从上至下依次执行 选择结构对给定的条件进行判断,再根据判断结果来决定执行代码 循环结构在给定条...
    Cc_5691阅读 466评论 0 0
  • java的流程控制语句包含条件语句和循环语句 一.什么是流程控制语句? ·流程控制语句:可以控制程序的执行流程。 ...
    全栈攻城狮DWQ阅读 10,971评论 0 1
  • JS中的程序是从上到下一行一行执行的 通过流程控制语句可以控制程序执行流程,使程序可以根据一定的条件来选择执行 语...
    牛耀阅读 412评论 0 0
  • 一.分支结构 1.if语句 if语句会与其后的第一条语句或代码块结合,且只有当判断条件为true时才执行语句或代码...
    游戏原画设计阅读 372评论 0 0
  • 今天我和妈妈又玩了卖东西的游戏,名字叫我是小老板,游戏规则是有一个人来当老板另一个人当顾客来买商品。我和我...
    碎片幻影阅读 499评论 0 0