zoukankan      html  css  js  c++  java
  • js中变量的作用域

    定义:作用域即是能够产生作用的范围,每种语言都会存在作用域

    分类:1、全局变量  2、局部变量(通常在函数体内)

        (使用var关键字声明的变量不是全局变量就是局部变量)

        全局变量:声明在函数外部的变量,在代码中任何地方都能访问到的对象拥有全局作用域。

          (1)最外层函数和在最外层函数外面定义的变量拥有全局作用域    

           var num = 100;//最外层函数外面定义的变量
                function fun(){
                    console.log(num)
                    var num1 = 200;//最外层函数内定义的变量
                    function fun2(){
                        console.log(num1);
                    }  
                }
                fun()

          (2)所有末定义直接赋值的变量拥有全局作用域,即没有使用var关键字声明的变量都是全局作用域 

           function fun(){    
                    num = 100;
                }
                fun();   
                console.log(num)//输出结果:100,num未使用var关键字声明,为全局变量

          注意: 函数必须经过调用后才会被执行

          (3)所有window对象的属性拥有全局作用域

                function fun(){ 
                    window.name = "internet";
                    //window.location
                }
                fun() 

       局部变量:声明在函数内部的变量

          function fun(){
                var num = 123;
                console.log(num);
          }
          fun();
          console.log(num)//报错,未定义

      局部变量的优先级要高于同名的全局变量,也就是说当局部变量与全局变量重名时,局部变量会覆盖全局变量

       var num = 1;    
       function func() {
          var num = 2;
           return num;
       }
       console.log(func());    //输出:2 

    补充:变量提升

        用var关键字定义,所有变量会在该作用域的最前面进行声明;变量赋值,代码写在哪里就在哪里赋值

         变量声明提升,函数声明整体提升

  • 相关阅读:
    WebView中实现文件下载功能
    PrograssBar的setIndeterminateDrawable不起作用
    62个Android Studio小技巧合集
    Touch 事件的分发和消费机制
    AndroidStudio
    pagefile.sys and heberfil.sys
    android ANR产生原因和解决办法
    JAVA中分为基本数据类型及引用数据类型
    handler
    洛谷 P2709 小B的询问
  • 原文地址:https://www.cnblogs.com/wcx-20151115-hzz/p/10130535.html
Copyright © 2011-2022 走看看