search

Home  >  Q&A  >  body text

javascript - js 变量作用域与函数问题

定义在函数外面的变量(不是别的函数的局部变量)能直接在函数里面使用么?
还是需要当参数传递进去后才能使用?

平常不传递也能直接用了,那当参数传进去还有啥意义?

PHP中文网PHP中文网2901 days ago410

reply all(7)I'll reply

  • 天蓬老师

    天蓬老师2017-04-10 15:13:20

    1)函数的目的是把一定的功能封装,并且使其具有一定的重用作用.
    2)如果函数中使用的变量都是在函数外面定义的,那么这个函数作用范围仅限在当前函数作用域或当前模块中(其实也是函数)了,达不到复用的目的

    bf 说的就是闭包的作用,可以隐藏变量,使其私有化

    reply
    0
  • 阿神

    阿神2017-04-10 15:13:20

    function a() {
        var b = {};
    
        function c() {
            return b;
        }
    
        return c;
    }
    

    function c(b) {
        return b;
    }
    

    的意義是截然不同的,

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 15:13:20

    var aa = 123;
    
    function add(aa){
    
       aa++
    
       return aa;
    }
    
    
    console.log(add(aa))  //124
    console.log(aa)       //123
    

    在aa不是引用的前提下,这样的操作是不会改变aa的值的。
    看自己代码使用情况而定

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-10 15:13:20

    函数内声明的变量,作用域在函数内。
    在函数外声明的变量,是全局变量,是在函数可以直接访问。
    为什么要传参数?
    这样就不会在函数内污染全局变量。

    var a = 1;
    
    function fn(aa)
    {
      a = a + 1;
      alert(aa);
    }
    
    fn(13);
    fn(16);
    
    //则此时a的值为3;
    

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-10 15:13:20

    JS中的作用域为词法作用域,一切定义在函数外面的变量均为全局变量,全局变量就可以在函数内使用,但是你如果以参数传入的话,在函数内部其实是定义了一个同名的变量。

    reply
    0
  • 大家讲道理

    大家讲道理2017-04-10 15:13:20

    Javascript 闭包 作用于链

    reply
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 15:13:20

    获取作用域外的变量的技术,称为闭包,楼主可以了解一下

    reply
    0
  • Cancelreply