JS三板斧——流程控制

1.判断语句

前言:在js中判断语句的存在是非常广泛的,我们可以根据判断条件的数目选择合适的判断语句,条件比较少时,使用if/else if/else,条件比较多时用switch,条件非常多的时候可以将条件弄成一个数组,然后用查找的方式进行判断。

  1. if/else if/else

    在单条件下,判断true和false不一定要使用或者=来判断,我们可以直接使用数值本身结合js的特性来判断。

    if (null) // false

    if({存在对象}) // true

    if(undefined) //false

    if(定义了的变量) // true

    if(0)// false

    if(除0外的所有数) // true

    if("")// false

    if(除了空字符串外的所有字符串)// true

    if([])// true

    多条件与&& || 的使用下,我们也可以先用数值自身判空和双判断条件的断路机制(如果前面的条件成立,就不会判断后面的语句)来避免发生空指针异常的错误。

if( a && b) // 遵照&& 符号判断, a与b存在一个为假的值,全为假

if(a || b ) // 遵照 || 符号判断,a与b存在一个为真,全为真

一般项目中会这样写,来达到判null,判undefined的目的:

if(obj && obj == “test”)

&& 和 || 的特殊特性还可以用来赋值,可以了解一下:

  1. switch

    前言:switch 语句根据expr表达式 的值,依次与 case 后表达式的值进行比较,如果相等,则执行其后的语句段,只有遇到 break 语句,或者 switch 语句结束才终止;如果不相等,则继续查找下一个 case。switch 语句包含一个可选的 default 语句,如果在前面的 case 中没有找到相等的条件,则执行 default 语句,它与 else 语句类似。

    js 的case 判断的是绝对相对===,值和类型都要相等

    js中的case可以是任意类型,可以是string类型,number类型,undefined等等,甚至还可以是一个自定义的函数。

    switch (expr){case undefined:alert("undefined");break;case func:alert("function");break;case 100:alert("number");break;case "hello":alert("string");break;
    }
    

2.循环语句

前言:js的循环比较多,可以酌情选择。

效率上:while/do-while的 duff’s device 循环>for>for-of>foreach>for-in。

各自的缺点: while/do-while的 duff’s device 循环采用并行循环的方式,一次执行多次循环,所以耗费资源较多,而且结束语句要另外定义。

​ for循环需要设置循环的步数,也就是循环的i值。

​ for-of遍历的是数值的值,对于遍历对象不是很友好,需要借助Objects.keys()方法来遍历。

​ foreach循环写法比较简洁,但是不能使用break,continue,return进行结束或者跳过循环的操作。

​ for-in循环比较适合遍历对象,对于遍历数组的值,会将原型变量遍历进去,所以效率最低。

​ 综合情况下,使用for和for-of是最好的。

  • while

    var x = 0;
    var n = 99;
    while (n > 0) {x = x + n;n = n - 2;
    }
    x; // 2500
    
  • do-while

    do-whilewhile循环的唯一区别在于,在每次循环开始的时候判断条件,而不是在每次循环完成的时候判断条件:

    var n = 0;
    do {n = n + 1;
    } while (n < 100);
    n; // 100
    
  • for

    var x = 0;
    var i;
    for (i=1; i<=10000; i++) {x = x + i;
    }
    x; // 50005000
    
  • for-in

    var o = {name: 'Jack',age: 20,city: 'Beijing'
    };
    for (var key in o) {console.log(key); // 'name', 'age', 'city'
    }
    
  • for-of

    var arr = ['a', 'b', 'c', 'd'];
    for (let a of arr) {console.log(a); // a b c d
    }
    
  • foreach

    var arr = ['a', 'b', 'c', 'd'];
    arr.foreach(item => console.log(item) // a b c d)
    

JS三板斧——流程控制相关推荐

  1. 【 js基础 Day2】js的流程控制:分支语句,循环.顺序结构

    复习 JavaScript简称为JS JavaScript是什么? 是一门脚本语言:不需要编译,直接运行 是一门解释性的语言:遇到一样代码就解释一行代码 C#语言是一门面向对象的语言,也是编译语言,是 ...

  2. 02 . JS 运算符 + 流程控制

    算数运算符 ------------------------------------- console.log(1 + 1); // 2console.log(1 - 1); // 0console. ...

  3. js回调流程控制, 更高级, 更优雅

    第一次发文, 仅纪念我开源的第一个npm包esdese 始于回调 早期的时候, 用jquery的ajax都是一层套一层, 2层的时候倒还好, 一旦多了就比较麻烦了. 后来使用了promise, 虽然说 ...

  4. EventFlow.helper.js 事件流程控制

    /*!* 事件流程管理* version: 1.0.0-2018.07.25* Requires ES6* Copyright (c) 2018 Tiac* http://www.cnblogs.co ...

  5. js的 流程控制(笔记)

    分支结构 /* if的语法结构if (表达式){执行语句} *//* 2.执行思路 如果if里面的表达式结果为真 true 者执行大括号里面的执行语句3.要是表达式的语句为假 者不执行大括号里面的语句 ...

  6. JavaScript异步流程控制的前世今生

    js的流程控制老大难问题就是异步回调. 一个流程过程,往往会出现回调地狱,这个回调异步控制就被提上研究得议程. 目前有实现的回调流程有以下几种 回调函数实现 事件监听 发布订阅 Promise/A+ ...

  7. 11月8日学习内容整理:js的引入方式,变量数据类型,运算符,流程控制,函数...

    js是一门成熟的编程语言,专门用浏览器客户端执行的语言 一.js的引入方式 1.直接在body标签中使用script标签写js语言 2.通过script标签导入js文件,<script   sr ...

  8. JS:2.1,流程控制(if,switch)高级

    ylbtech-流程控制:流程控制(if,switch)高级 if语句 if if-else if-else_if-else switch JS:2.1.0,if语句返回顶部 If 语句 如果希望指定 ...

  9. php 获取 js json数据类型,JS基础-JS的数据类型和访问/流程控制/JSON格式字符串和js对象相互转换...

    JS的数据类型和访问/流程控制/JSON格式字符串和js对象相互转换 1. JS的数据类型和访问 1.1. 原始类型JS中的原始数据类型有: number , string , boolean ; 声 ...

最新文章

  1. BZOJ1951: [Sdoi2010]古代猪文
  2. 华为S系列交换机全面阻击“WannaCry”
  3. python实验原理_Python实验报告八
  4. ssm前端时间格式转换
  5. html中相同结构标签怎么区分,html标签结构总结
  6. 【转载】FAT32文件系统详解
  7. 使用计算机管理文件教后反思,五年级信息技术下册《文件和文件夹》教学设计和教学反思...
  8. 分布式数据库中全局唯一主键
  9. 响应式网站关于资源跨域问题
  10. 数据库学习笔记4-隔离级别 Read Committed
  11. Friendster,linkedin,orkut,liring对SNS的求索 1
  12. Java程序员月薪三万的技术达到什么程度?
  13. oracle怎么查表空间,如何查看oracle所有的表空间
  14. Android系统之ContentObserver和SettingsProvider结合使用(三)
  15. 【12月19日】传媒行业的股票排名
  16. 面试必问 | 聊聊MyBatis执行流程?
  17. C#合并单元格,AddMergedRegion
  18. SpringBoot项目打包成jar后读取包内文件报错问题解决方法
  19. 2345 php笔试题,2345浏览器笔试题
  20. 华为OD机试真题 Python 实现【统一限载最小值】【2023 Q1 | 200分】

热门文章

  1. 【博学谷学习记录】超强总结,用心分享|HiveSQL面试题实战(二)|详细的步骤解析
  2. Windows 7 新功能选集
  3. js生成二维码以及插入图片
  4. 力技艺法道,工匠师圣仙
  5. 在使用计算机时 若直接通过,在使用计算机时,若直接通过断电的方式来关闭机器,会存在什么问题,下列说法不正确的是_______...
  6. 电子数字计算机的应用,你了解电子数字计算机的发展吗?人类是如何应用计算机技术的?...
  7. 数睿数据深度 | 关于软件自主可控,源代码向左,无代码向右
  8. 2020年7月最新阿里云服务器优惠卷哪里领?
  9. LDPC码Gallager论文解读
  10. 车内看车头正不正技巧_科目二考试最实用技巧!