Javascript私有变量和参数有什么区别
Javascript private variables and parameters what is the difference?
在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对象的好方法吗?
从功能上讲,您的示例没有区别,除了使用 _a
,您有一个您并不真正需要的额外变量。
在松散模式下,可能存在微小的性能差异,因为写入参数不仅需要更新命名副本(a
),还需要更新伪数组arguments
。在严格模式下,两者(命名版本和arguments
中的条目)没有链接,因此您没有那么微小的潜在性能差异。
当然,这是JavaScript,优化因引擎而异。例如,一个快速测试显示Chrome上的零差异,并且在Firefox上使用的参数略慢。使用严格的版本,Firefox 上的差异消失了(但它太小了,很容易成为测量误差)。(这个答案的早期副本说其中一个在IE8上较慢,但我相信这是测量误差,因为我无法复制结果。
无论如何,我都不希望速度的差异很重要,除非您多次呼叫something
。
您的两个示例在功能上没有区别。_a变量是多余的。
来源: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- 在ember/handlers中使用value和valueBinding有什么区别
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- Math.min()和Math.max()之间有什么区别?在Javascript中
- angularjs中的ng网格和ui网格有什么区别
- webpack开发模式和生产构建模式之间有什么区别
- 缓存!saveLocations()和addLocation()函数有什么区别
- 关于承诺/A+规范,术语“当时可”和“承诺”之间有什么区别
- 以下两者在javascript中有什么区别
- jquery.js和jquery.lite.js有什么区别
- 通过Nuget安装Angular JS和Angular JS核心有什么区别
- XMLHttpRequest对象的open()和send()方法之间有什么区别
- 这两种不同的创建对象文字的方法有什么区别
- jQuery中这两个词有什么区别
- 在Javascript语法中:和::和:::有什么区别
- getElementById 和 getElementsByClassName 有什么区别?
- (typeof variable === “function”) 和 jQuery.isFunction() 有什么区别
- 在使用JS的Ajax调用中,ajaxComplete和beforesend之间有什么区别
- $(e.target).find和template.find('input').value之间有什么区别
- 在javascript中,在变量名之前使用var有什么区别/优势吗