zoukankan      html  css  js  c++  java
  • switch case的作用域

    在switch case中定义变量报错,例如:

    let num = 1

    switch(num){

      case 1:

        let a = 1

        break

      default:

        console.log(a)   //1

    }

    再例如

    switch(num){

      case 1:

        let a = 1

        break

      case 2:

        let a = 2    

        break  

      default:

        console.log(a)   //报错 提示has already been declared

    }

    看出每个case不会构成单独的作用域,整个的switch是一个作用域。

    let num = 1

    switch(num){

      case 1:

        a = 1

        break

      default:

        console.log(a)   //1    全局变量绑在window上,所以可以打印

    }

    但是:

    let num = 2

    switch(num){

      case 1:

        let a = 1

        break

      case 2:

        a = 2

        break

    }

    这种情况会报a未定义,因为case1并未执行,如果num改为1 ,则不会报错。

    问题无法解决,换成了if-else

  • 相关阅读:
    时间复杂度,空间复杂度
    冒泡排序,选择排序,插入排序
    redis集群
    redis进阶
    redis常识--基础
    mysql基本操作
    TCP/IP 的介绍
    OSI七层网络模型&TCP&UDP&三握四挥
    DNS
    局域网&广域网
  • 原文地址:https://www.cnblogs.com/kangyy/p/13963984.html
Copyright © 2011-2022 走看看