Javascript-在哪里放置常量,全局或本地
Javascript - Where to put Constants, Global or Local?
我是javascript的新手,尝试理解全局和局部变量。我一直听到"避免全局变量"。我有一堆只在一个函数中使用的字符串变量,所以我应该让它们成为局部变量,对吧?我永远不需要改变那里的价值,所以我想知道。。。每次调用函数时,是否意味着所有这些变量都会一次又一次地设置为相同的值。javascript一遍又一遍地设置这些变量需要花费时间或精力吗?是否有更好的方法来处理您知道永远不会改变值的变量。这是我在上得到的
function test() {
var a="the quick brown fox blah blah blah...";
var b="Hello world blah blah blah....";
var c...
var d.... etc, etc....
<more code goes here>
}
对我来说,每次调用test()时,所有变量都会重新设置。如果我把它们放在函数之外,它们不是只设置一次吗?但这将使他们全球化,对吧?
这并不是说在性能方面真的会有所不同,但你可以将它们排除在全局范围之外,但仍然只定义一次:
(function() {
var a = "a";
var b = "b";
window.test = function() {
console.log(a);
};
})();
您可以拥有任意数量的变量。我怀疑您是否会创建如此多的变量,从而影响您的应用程序性能。
您应该始终牢记的是申请的清晰性。代码必须可读。
如果您只在函数中使用一个变量,那么您也应该在该函数中声明它。
建议您避免创建全局变量。
如果您将代码封装在一个自调用函数中,这是很容易实现的:
(function() {
var CONSTANTS = {
key: "VALUE",
key2: "VALUE2",
};
function doSomething() {
var local_property = "foo";
console.log(CONSTANTS.key2); // it works
}
} ());
doSomething(); // error
console.log(CONSTANTS.key); // you won't be able to access it here
我建议您阅读以下文章,以便更好地了解JavaScript的工作原理:
可变语句
关闭
语法和类型
你说得对,每次调用test
函数时都会设置这些变量,所以把它们移到函数之外是个好主意(可能有一些解释器优化可以防止任何性能损失,但我仍然认为这对代码可读性是个好想法)。
最好的解决方案是将所有代码封装在一个立即调用的函数表达式(IIFE)中,如下所示:
(function main() {
var a="the quick brown fox blah blah blah...";
var b="Hello world blah blah blah....";
var c...
var d.... etc, etc....
function test() {
<more code goes here>
}
// call test() many times
}());
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- 正在全局范围中查找JavaScript函数
- delete关键字在全局变量上的不同行为
- 在javascript函数中设置全局变量
- 如何将getJson的响应保存在全局变量中
- 全局对象是属于哪个类的对象
- Javascript全局onclick监听器
- 从Javascript方法返回全局变量
- 访问jsrender模板中的全局javascript变量并更新它
- Javascript-在哪里放置常量,全局或本地
- 我可以在不注入控制器的情况下在 Angular 中使用全局常量吗?
- Meteor:全局常量未从app/lib/_constants.js中获取
- 如何循环遍历常量的全局命名空间?
- 在AngularJS中创建和访问全局常量
- Javascript / jQuery中的Access Rails全局常量
- 为什么我不应该在JavaScript中为常量使用全局变量呢?
- NodeJs定义全局常量
- PHP在PHP中设置全局常量中的硬编码URL
- 用javascript es6编写全局常量的正确方法是什么
- 如何在Angularjs中创建这个全局常量,以便在控制器之间共享