【问题标题】:Javascript private variables and parameters what is the difference?Javascript私有变量和参数有什么区别?
【发布时间】:2013-09-17 21:24:17
【问题描述】:

在 javascript 中创建一些对象时,我开始怀疑是否有必要创建仅指向参数的私有变量,因为对象中的所有函数(可以使用私有变量)都在 javascript 中的对象函数内部.

示例: 我通常是这样的

function Foo(a) {
   var _a = a;
   function something() {
      _a += 1;
      somethingElse(_a);
   }
}

但对我来说,我似乎可以这样做:

function Foo(a) {
   function something() {
      a += 1;
      somethingElse(a);
   }
}

然后我的问题是,我在这里是否遗漏了什么或做错了什么,或者这是设计我的 javascript 对象的好方法?

【问题讨论】:

    标签: javascript oop parameters private


    【解决方案1】:

    您的两个示例在功能上没有区别。 _a 变量是多余的。

    来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope

    【讨论】:

      【解决方案2】:

      然后我的问题是,我是否在这里遗漏了什么或做错了什么,或者这是设计我的 javascript 对象的好方法?

      在功能上,除了_a 之外,您的示例没有任何区别,您有一个您并不真正需要的额外变量。

      在松散模式下,可能存在微小性能差异,因为写入参数不仅需要更新命名副本(@ 987654324@),但arguments 伪数组也是如此。在严格模式下,两者(命名版本和arguments 中的条目)没有关联,因此您没有那种微小潜在的性能差异。

      当然,这是 JavaScript,优化因引擎而异。例如,quick test 在 Chrome 上显示零差异,在 Firefox 上使用非常轻微慢的参数。使用strict version,Firefox 上的差异消失了(但它太小了,很容易出现测量错误)。 (这个答案的早期副本说其中一个在 IE8 上速度较慢,但​​我认为这是测量错误,因为我无法复制结果。)

      无论如何,我不认为速度上的差异会重要,除非您多次致电something

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-12
        • 2019-11-04
        • 2019-08-23
        • 2012-02-08
        • 2013-06-22
        • 1970-01-01
        • 2017-05-20
        • 2023-03-28
        相关资源
        最近更新 更多