Javascript 重用没有全局变量的函数?
几天前,我通过自己的例子了解了全局变量和函数有多糟糕。因此,显然最好的解决方案是不使用它们,但是迟早我会需要一次又一次地重用我的变量和函数 所以我的问题是:我可以重用我的函数和变量而不全局声明它们吗?能做到吗 例如,我想多次重用我的Javascript 重用没有全局变量的函数?,javascript,jquery,Javascript,Jquery,几天前,我通过自己的例子了解了全局变量和函数有多糟糕。因此,显然最好的解决方案是不使用它们,但是迟早我会需要一次又一次地重用我的变量和函数 所以我的问题是:我可以重用我的函数和变量而不全局声明它们吗?能做到吗 例如,我想多次重用我的alertBox函数和我的containsP变量: 演示: 我想避免碰撞全局对象的最简单方法就是创建自己的“应用程序上下文”。您可以通过创建一个自调用函数来实现这一点,该函数将整个js代码封装在每个文件中 (function( win ) { "use str
alertBox
函数和我的containsP
变量:
演示:
我想避免碰撞全局对象的最简单方法就是创建自己的“应用程序上下文”。您可以通过创建一个自调用函数来实现这一点,该函数将整个js代码封装在每个文件中
(function( win ) {
"use strict";
var still_global_but_only_in_this_anonymous_closure = true;
$(document).ready(function() {
// ...
// accessing the global object:
win.some_global_property = true;
});
}( this ));
实际上,您已经在使用传入
.ready()
的匿名函数创建这样一个本地上下文。这只是更明确的方式。该自调用方法只需使用全局对象作为参数调用自身(在这里您仍然可以显式访问全局变量)。此外,通过调用“use strict”
您可以避免意外创建全局变量alá“Ops_I_忘记了_Var_station=true;
您发布的代码没有全局变量。函数内部声明的变量(在您的示例中,是匿名document.ready
处理程序)除非你犯了以下两个错误之一,否则永远不会全球化:
var
关键字,使window.myVar=…;
这些不是全局的,因为它们的作用域是传递给
$(document.ready()的匿名函数
。您还打算在哪里使用它们?您最初在ready函数中声明它们的示例运行良好。请记住,有时您确实需要全局函数,要在包装函数中执行此操作,请使用以下命令:window.myFunc=myFunc;
(function( win ) {
"use strict";
var still_global_but_only_in_this_anonymous_closure = true;
$(document).ready(function() {
// ...
// accessing the global object:
win.some_global_property = true;
});
}( this ));