当前位置: 首页 > news >正文

chapter1.3、JS的分支语法

JS语法

语句块

JS使用大括号构成语句块。
ES6 之前语句块是没有作用域的,从ES6开始支持 块作用域 ,let只能在块作用域内可见,函数作用域还是在函数内对内可见,外部无法直接访问

function hello() {
    let a = 1;
    var b = 2;
    c = 3
    }

//console.log(a) // 不可见
//console.log(b) // 不可见
//console.log(c) // 不可见吗?

块作用域

if (1) {
    let d = 4;
    var e = 5;
    f = 6
    if (true) {
        console.log(d)
        console.log(e)
        console.log(f)
        console.log('-------------')
        g = 10
        var h = 11
    }
}
let d = 44
// console.log(d) // 块作用域使用let,不可见;但是块外的d可见
console.log(e) // 块作用域使用var,可见
console.log(f) // 块作用域隐式声明,可见
console.log(g) // 可见
console.log(h) // 可见

大括号中的一行可以不加括号,多行必须加,为了代码安全性,最好全都加上

流程控制

条件分支

a = 100
if (a<100) {
    console.log("less than 100")
}else if (a>100) {
    console.log("more than 100")
}else if (a === 100) {
    console.log("That's OK")
}else {
    console.log("No")

注意等效false的值

false,undefined,null,0,NaN,空字符串,其他的都视为true

注意,空数组,空对象是等效true的

switch...case分支语句

switch (expression) {
  case label_1:
    statements_1
    [break;]
  case label_2:
    statements_2
    [break;]
  ...
  default:
    statements_def
    [break;]
}

switch有向后穿透的能力,可以在case中恰当使用break语句,否则会继续向下执行

x = parseInt(Math.random() * 10)
switch (x) {
    case 0:
        console.log("zero");
        break;
    case 1:
        console.log("one");
    case 2:
        console.log("two");
    case 3:
        console.log("three");
        break;
    case 5:
    case 4:
        console.log("four")
    default:
        console.log("other")
}

switch...case结构都可以转换为if...else...结构,多分支结构

for 循环

for 循环可以在一行实现。
 ( ; ; )第一部分是要迭代变量,进入时执行一次,第二个是退出条件,每次都要判断,第三个执行条件是在执行完代码块才执行的。

先判断退出条件,执行代码块,再走第三部分

// C风格循环
for (i=0;i<10;i++){
    console.log(i)
}

也可以这样使用,但是循环次数一样才能

for (var x=0,y=5;x<6;x++,y--) {
    console.log(x+y)
}

也可以使用跳过的方法

for (i=0;i<10;i +=3){
    console.log(i)
}

死循环

for (;;) // 死循环
    console.log(".......")

 

while循环 和 do...while循环

arr = [1,2,3,4]
var i=0,j=arr.length-1
while (i<arr.length){
    console.log(arr[i]);
    i++;
}

do...while循环,先进入循环,然后判断,为真就继续循环

var i= 0
do{
    console.log(arr[i]);
    i++;
}
while (i<arr.length);

for...in循环

对象操作语句for...in用来遍历对象的属性

for in 循环返回的是索引或者key,需要间接访问到值。
数组反正返回的是索引,C风格for循环操作可能方便点。根据个人喜好选择。
对象用for in合适

for...of 循环

注意:for ... of 不能迭代对象。
原因是,of后面必须是一个迭代器(TypeError: obj[Symbol.iterator] is not a function)
可类比python中的for in,例如for x in [ ]

只能迭代数组

break 、 continue

break 结束当前循环
continue 中断当前循环,直接进入下一次循环

for迭代的差别

function sum(arr){
    for (let x in arr){ // 遍历index或对象属性
        console.log(x, typeof(x),arr[x]);
    }
    for (let x of arr){ // 遍历元素
        console.log(x, typeof(x));
    }
    for (let x=0;x<arr.length;x++){ // 自己定义索引数值遍历
        console.log(x, typeof(x),arr[x]);
    }
}
sum([3,6,9]);

 

转载于:https://www.cnblogs.com/rprp789/p/9970728.html

相关文章:

  • 企业邮件系统多域通讯录共享方案
  • 取证分析:在通信过程中不关心目标的子网掩码
  • 系统维护和tcp连接
  • winform 如何控制输入法
  • DoS***_详解(转载)
  • 自定义序列化技术2:变长数组的实现
  • 2,8,10,16进制转换
  • Hadoop:Hadoop的常见启动错误(有新问题会持续更新)
  • loj 1030概率dp
  • IoT:利尔达的半壁江山
  • 64位 windows10,安装配置MYSQL8.0.13
  • webservice—验证磨刀不误砍柴工的真理
  • linux ubuntu 网卡配置---固定IP
  • PHP-数据库永久连接
  • Effective_STL 学习笔记(七) 当使用 new 得指针容器时,记得在销毁容器前 delete 那些指针...
  • 【附node操作实例】redis简明入门系列—字符串类型
  • mac修复ab及siege安装
  • nfs客户端进程变D,延伸linux的lock
  • React-Native - 收藏集 - 掘金
  • Webpack 4 学习01(基础配置)
  • 彻底搞懂浏览器Event-loop
  • 基于axios的vue插件,让http请求更简单
  • 老板让我十分钟上手nx-admin
  • 我的业余项目总结
  • 一、python与pycharm的安装
  • 再次简单明了总结flex布局,一看就懂...
  • ionic入门之数据绑定显示-1
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (ZT)出版业改革:该死的死,该生的生
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (剑指Offer)面试题34:丑数
  • (九十四)函数和二维数组
  • (三分钟)速览传统边缘检测算子
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (推荐)叮当——中文语音对话机器人
  • (转)LINQ之路
  • (转)Unity3DUnity3D在android下调试
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .net wcf memory gates checking failed
  • .NET 材料检测系统崩溃分析
  • .net2005怎么读string形的xml,不是xml文件。
  • .net反编译的九款神器
  • .NET委托:一个关于C#的睡前故事
  • .NET中winform传递参数至Url并获得返回值或文件
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • :如何用SQL脚本保存存储过程返回的结果集
  • @font-face 用字体画图标