使用外部变量引用其他变量的闭包Javascript构造函数

拉佐洛克人
var Beer = function(){
    var moreBot = 100,
        lessBot = 10,
        wholeCase =  moreBot + lessBot;

    this.count = function(){
        moreBot = 22; 
        lessBot = 33;
        console.log(moreBot); //returns 22
        console.log(lessBot); //returns 33
        return wholeCase; //returns 110 instead of 55??
    };
};

var Alc = new Beer();

可以这么说,我有一个使用闭包的构造函数,该闭包引用了外部函数变量。那么,为什么在更改moreBot和lessBot变量后返回WholeCase时,我得到的是原始分配值的总和?预先感谢您的专业知识!

炸药

wholeCase在施工时设置。您的示例与以下示例没有明显区别:

var foo = 5,
    bar = 6;
var sum = foo + bar; // sum is 11

foo = 100000;
console.log(sum); // sum is still 11; we never changed sum

您要么在wholeCase每次使用它时都需要重新计算,要么就使其成为一个函数:

var Beer = function(){
    var moreBot = 100,
        lessBot = 10,
        computeWholeCase = function() { return moreBot + lessBot };

    this.count = function(){
        moreBot = 22; 
        lessBot = 33;

        return computeWholeCase(); // run computeWholeCase to return 55
    };
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据其他外部函数创建变量

Javascript构造函数:访问外部变量

在Java构造函数中使用变量来初始化仍在构造函数中的其他变量

JavaScript工厂函数在闭包范围之外修改变量

在闭包内部构造具有多个方法的函数,并且错误“语法:闭包声明中不能使用局部变量T”

从 Codeigniter 中的其他函数调用构造函数中的变量

Swift类:使用指向成员函数的闭包声明变量

如何在PHP的闭包函数中使用变量?

使用其他变量中的数据引用go中的变量?

继承的构造函数和其他变量的解决方法

为什么我不能从闭包中返回对外部变量的可变引用?

Swift嵌套函数与闭包变量

具有闭包的语言中的函数,该函数根据外部定义的变量采取不同的操作

mutate(across()) 使用外部函数引用当前数据框中的其他变量而不传递第二个参数

JavaScript 使用构造函数设置变量

从其他函数访问变量而不使用全局变量

在闭包javascript内部分配变量

JavaScript闭包和全局变量

获取JavaScript中的闭包变量列表

JavaScript分析之谜-闭包变量

如何覆盖 JavaScript 中的闭包变量?

Javascript闭包中变量的寿命

在javascript闭包中访问变量

带有 let 变量的 Javascript 闭包

在变量中使用闭包时,swift变量和函数有什么区别?

在Javascript中,如何从该函数中调用但在其他位置定义的函数中引用函数范围的变量?

如何使用javascript中的闭包访问函数内另一个作用域中的变量?

闭包尾随变量

闭包的惰性变量