相关疑难解决方法(0)

JavaScript关闭在哪里?

我写了这段代码来自学JavaScript关闭:

function1 = function(){
  var variable = "foo"
  var function2 = function(argument){
    console.log(variable + argument);
  }
  return function2
}

function3 = function1();
function3("bar");
Run Code Online (Sandbox Code Playgroud)

按预期打印"foobar".但变量在哪里生活?

它是否成为function3的属性,还是存储在function3中的其他位置?JavaScript是否遍历某种闭包链,类似于它如何遍历原型链?它存储在其他地方的内存中吗?

我想更深入地了解这一点.

javascript closures

27
推荐指数
1
解决办法
987
查看次数

javascript无法访问私有资产

我有以下代码,我不明白为什么我重新声明get方法时无法访问私有属性.

(function(w,d,a,undefined){
    var cfg = {
        currency: 'GBP',
        exponent: 2
    };
    var get = function () {
        return cfg;
    };
    a.init = function (settings) {
        for (var k in settings) {
            cfg[k] = settings[k];
        }
    };
    a.set = function (args) {
        get = args.get || get;
        //eval(args) //works but why??
    };
    a.get = function () {
        return get();
    };
})(window,document,window.fxc = {});

fxc.init({currency: 'EUR'});

// prints, Object { currency="EUR", exponent=2}
console.log(fxc.get());

fxc.set({get: function(msg){
    // cannot access private properties
    return cfg; …
Run Code Online (Sandbox Code Playgroud)

javascript

6
推荐指数
2
解决办法
1009
查看次数

是否需要将函数返回称为闭包

嘿,我在youtube上看到了这个视频http://www.youtube.com/watch?v=KRm-h6vcpxs

这基本上解释了IIFE和闭包.但我不明白的是我是否需要返回一个函数才能将其称为闭包.

防爆

function a() {
    var i = 10;
    function b() {
       alert(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我可以将其称为闭包,因为它从外部函数的作用域访问'i'变量或者我是否需要返回这样的函数

return function b(){alert(i);}
Run Code Online (Sandbox Code Playgroud)

javascript closures

5
推荐指数
2
解决办法
799
查看次数

标签 统计

javascript ×3

closures ×2