javascript - 函数表达式中的私有(private)变量

标签 javascript private public

为什么这不起作用?

(function () {
    var cache = ['hii'];
    return function add (fn) {
         if (!cache.contains(fn)) {
              cache.push(fn);
              return true;
         }
         return false;
    };
}());

add('dd');

我收到一条错误消息:Uncaught referenceError: add is not defined.

最佳答案

外部匿名函数返回内部 add 函数,但返回值未分配给任何东西,因此您无法访问它。

(请注意,为 add 命名并不意味着它可以通过该名称使用;因为它是 return 语句的一部分,所以它变成了 function expression令人困惑的是,它与函数声明具有相同的语法,但不会导致创建指向该函数的变量。)

尝试将第一行更改为如下所示:

add = (function () {

关于javascript - 函数表达式中的私有(private)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23840488/

相关文章:

javascript - 确认消息字符串中引入换行符

c++ - 在私有(private)类语法中复制构造函数

c++ - 如何从另一个类访问私有(private)变量?

oop - 我可以动态调用本地函数吗?

javascript - 如何在页面底部有 2 个固定页脚

javascript - TypeScript - 她一定要拥有它? (它 == 全局范围)

javascript - 是否可以阻止浏览器访问文本文件,但仍允许 JavaScript 访问?

nHibernate 在托管网站上性能低下

android 注释 MyTask_(Context) 在 MyTask_ 中具有私有(private)访问权限

javascript - 更改在运行时添加到 DOM 的元素的 css 类