Javascript - 使用闭包增加静态函数变量模拟?

标签 javascript scope closures

所以在 Javascript 中似乎没有函数静态变量。我试图在函数内增加一个变量,但我不想这样做:

function countMyself() {
    if ( typeof countMyself.counter == 'undefined' ) {
        // It has not... perform the initilization
        countMyself.counter = 0;
    }
}

我想用闭包来做,但我真的很难理解这些。

有人在另一个问题中提出了这个建议:

var uniqueID = (function() {
   var id = 0;
   return function() { return id++; };
})();

但是当我提醒 uniqueID 时,它所做的只是打印这一行:return function() { return id++; };

所以我想知道如何在不污染全局范围的情况下增加函数中的变量。

最佳答案

您实际上必须调用 uniqueID - 您不能只引用 is 就好像它是一个变量:

> uniqueID
function () { return id++; }

> uniqueID()
0

> uniqueID()
1

关于Javascript - 使用闭包增加静态函数变量模拟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19193348/

相关文章:

javascript - 如何在 Jest 测试之前配置 beforeEach 函数?

javascript - 如何使函数内定义的变量 newUser 成为全局变量?

javascript - 如何选择在 for 循环中创建的元素?

maven - 如何配置 maven-enforcer-plugin 以排除测试范围内的某些规则?

ios - 有什么方法可以持久化 Swift 闭包吗?

go - 为什么 Go 在 goroutine 中以不同的方式处理闭包?

javascript - 如何在客户端浏览器中读取服务器文件

javascript - Mouseenter 不适用于动态内容

javascript - 如何使 cardHeader 组件中的头像元素居中?

c++ - 将元素添加到未存储的 c++ 类中的 vector