2018-06-27 js 中 三种 作用域 详解 (全局

2018-06-27  本文已影响0人  Mo_ham_med
js  中 三种 作用域 详解 (全局 , 函数, 块级)
  1. 全局变量: 声明在函数外部是的变量 (所有没有用 var 直接赋值的变量 都属于 全局变量)

  2. 布局变量: 声明在函数内部的变量 (所有没有用 var 直接赋值的变量 都属于 全局变量)

js 中 变量声明 分为   显式声明  和   隐式 声明。

var i = 100 // 显式 声明

i = 100; // 隐式 声明

在 函数中

使用 var 关键字 进行 显式 声明 的 变量  是作为  局部变量, 而 没有 用  var 关键字,使用直接 赋值方式 声明 的是 全局变量。


当我们 使用 访问一个 没有声明 的变量时,js  会 报错。   如下:
    alert(aaa)   //  报错   aaa  is not undefin   

而 我们 给 一个 没有声明 的变量 赋值时,js 不会报错, 相反 它会认为 我们 是 要 隐式 声明 一个 全局变量,这一点 一定 要注意。
    num = 10;
    // 隐式 声明


全局作用域  针对 全局变量  来说 :

       alert(c);//输出undefind  

    // alert(d);报错错  

       var c=3;  

     function test(){  

         var a=1;  

         b=2;  

         alert(c)//输出三  

     }  

     alert(c);//输出3  

      test(); 




全局变量在整个 上下 都有效 ,  只是在没有 赋值之前调用,会输出 undefined。

函数作用域 是 针对   局部变量  来说的, 在 函数中 定义的 变量 在 函数 外不能获取。
    function test(){  

            alert(a);//声明 未赋值输出undefine  

            var a=1;  

            alert(a);//1  

     }  

    // alert(a);报错,外部获取不到  

   

    test();  

    //alert(a);保存不能输出  



 块级作用域

 概念'{}' 中间部分 都是  块级作用域     ex(测试) : for  while  if  ,中 没有 作用域,

但是,可以用 闭包 实现类似功能。


var i=1;  

     if(i==1){  

         var b=2;  

     }  

     alert(b);//输出2  

     for(var j=0;j<=2;j++){  

        var c=3;  

     }  

         alert(c);//输出3



上一篇下一篇

猜你喜欢

热点阅读