栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JavaScript将范围传递给另一个函数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaScript将范围传递给另一个函数

真正访问函数

a
私有范围的唯一方法是在函数
b
内部声明,
a
这样就形成了一个闭包,允许隐式访问
a
变量。

这是您的一些选择。

直接访问

  1. b
    在内部声明
    a
        function a() {       var x = 5,          obj = {};       function b(){          // access x or obj...       }       b();    }    a();
  1. 如果您不想
    b
    在中使用
    a
    ,则可以将它们都放在更大的容器范围内:
        function container() {       var x, obj;       function a(){          x = 5;          obj = {..};          b();       }       function b(){          // access x or obj...       }    }    container.a();

这些是您可以

a
直接使用的变量
b
而无需任何额外的代码来移动内容的唯一方法。如果您对一点“帮助”和/或间接的内容感到满意,这里有一些更多的想法。

间接访问

  1. 您可以只将变量作为参数传递,但除了对象的属性之外,将没有写访问权限:
        function a() {       var x = 5,          obj = {};       b(x, obj);    }    function b(x, obj){       // access x or obj...       // changing x here won't change x in a, but you can modify properties of obj    }    a();

作为此方法的一种变体,您可以通过将更新后的值传递回来获得写访问权,

a
如下所示:

        // in a:    var ret = b(x, obj);    x = ret.x;    obj = ret.obj;    // in b:    return {x : x, obj : obj};
  1. 您可以
    b
    使用可访问
    a
    的私有变量的getter和setter 传递对象:
        function a(){       var x = 5,          obj = {..},          translator = {  getX : function() {return x;},  setX : function(value) {x = value;},  getObj : function() {return obj;},  setObj : function(value) {obj = value;}          };       b(translator);    }    function b(t){       var x = t.getX(),          obj = t.getObj();       // use x or obj...       t.setX(x);       t.setObj(obj);       // or you can just directly modify obj's properties:       obj.key = value;    }    a();

获取器和设置器可以是公共的,分配给的

this
对象
a
,但是只有从内部明确给出时,它们才可以访问
a

  1. 您可以将变量放在一个对象中并传递该对象:
        function a(){       var v = {          x : 5,          obj : {}       };       b(v);    }    function b(v){       // access v.x or v.obj...       // or set new local x and obj variables to these and use them.    }    a();

作为一种变体,您可以在调用时构造对象:

        function a(){       var x = 5,          obj = {};       b({x : x, obj: obj});    }    function b(v){       // access v.x or v.obj...       // or set new local x and obj variables to these and use them.    }    a();


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/484980.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号