变量作用域、switch语句、while语句、for语句

511 阅读3分钟

Javascript 变量作用域、switch语句、while语句、for语句

一、变量作用域

变量作用域分别是:全局变量和局部变量;
全局变量是声明在script标签下的变量
局部变量是声明在方法体中的变量。
全局变量故名思意,就是从自己声明的地方向下的代码都可以访问和使用的变量。
局部变量由于是声明在方法体中的,所以他的作用域只局限于方法体内部使用。

<script>
    //定义一个全局变量
        var public;//此时public这个变量就能够被他下面的所有代码块所使用,直到程序结束
        fun1();//调用方法一
        fun2();//调用方法二
        //声明一个方法
        function fun1(){
            //声明一个局部变量并赋值
            var static = "Starqin920";//此时static这个变量的作用域就是从这个定义的地方开始,到fun1方法的结束花括号
            //方法内部使用全局变量,例如给全局变量赋值
            public = 5201314;//此时public的值在整个作用域中都将变为5201314;
        }
        
        //再定义一个方法
        function fun2(){
            //在这个方法分别输出public和static
            console.log(public);//输出结果5201314
            console.log(static);//输出结果报错 static is not defined(原因是static是在方法一中声明的,作用域到方法一结尾花括号处结束,其余的代码块访问不到)
        }
</script>

值得注意的是,严格意义上讲全局变量是不可重复定义的,但是js中却允许重复定义,重复定义后的全局变量其作用域是从第一次定义的地方开始,到第二次定义的地方结束,第二次定义的地方开始,到第三次定义的地方结束,第三次定义......
很显然如果一个程序中有这样的变量存在,会使得开发人员无法准确的判断变量值,所以在写全局变量时,不要重复定义。

//一定要搞清楚定义变量和使用变量的区别
//定义变量 变量前有var 
//使用变量 变量前没有var 

全局变量不能重复定义,但是局部变量可以在不同的方法(函数)中重复定义的。

变量var的问题

在js中定义变量时 var 其实是可以写,也可以不写的。
写与不写var的区别

  1. 书写var后 在script标签下声明的变量就是全局变量,在方法(函数)中声明的变量就是局部变量
  2. 没有书写var时,如果在它前面没有声明过同名变量,那么无论声明在哪,都是全局变量。如果在此之前有声明同名的变量,那么此时就是调用变量的意思,此前是什么类型的变量就是什么类型的变量

二、switch语句

switch语句和if语句一样都是条件判断语句,属于分支语句,其语法是:

    switch(变量){
           case '匹配值':
                   匹配值相同时执行的代码
                   break;//结束,跳出
           case '匹配值':
                   匹配值相同时执行的代码
                   break;//结束,跳出

           default:
                   其他时候执行的代码
                   break;

    }
    
    //如果case块与case块之间没有break,那么case都会被执行,这就是所谓的穿透

三、循环语句

当什么循环

while循环语法

while(条件){
    条件满足时执行的代码
}

//如果while括号中的条件为真就会执行,这也造成了这个函数的一个天生bug,例如如果里面的值时true或者1时,程序就会进入死循环

//为了避免出现这样的状况,一般都要添加结束循环的条件例如下面的程序
var i = 15;
while(i>10){
    console.log('执行了')
    i--;
}

当i大于10时,执行循环

直到什么循环

for循环语法

for(var 变量初始值;结束条件;循环变量){
    循环体(循环执行的代码)
}

for(var i=0;i>10;i++){
    console.log('执行了')
}

直到i大于10循环就会结束

每日一记,如有错误,欢迎指出