javascript中的变量范围是什么?它们的内部是否与函数外部相同?或者甚至重要吗?另外,如果变量是全局定义的,那么它们存储在哪里?
不久之前,我提出了一个JavaScript设计模式(模块模式 - 见下文),我从John Resig的例子中得到了一个解决某人问题的一部分,我收到了以下评论:
"......这种模式有点过于设计而不是那么好.仍然渗透到全球范围.而你不打开自己的异步装载机.但它比ad-hoc编码更好!"
所以…
如果"泄漏"到全局范围意味着"您的对象被附加到浏览器窗口(对象)"......那么所有内容都已经被追加(全局):
这"泄漏"到全球范围:
window.jQuery
Run Code Online (Sandbox Code Playgroud)
...只需调用: window.jQuery并将其解析为函数();
这"泄漏"到全球范围:
function HelloWorld() { alert(‘Howdy’); }
Run Code Online (Sandbox Code Playgroud)
......打电话给window.HelloWorld()你:你会得到'你好'.
这"泄漏"到全球范围:
var myVariable = 10;
Run Code Online (Sandbox Code Playgroud)
......打电话给window.myVariable你:你会得到10分
如果评论者是正确的,那么以上所有"泄漏"到全球范围.所以,就个人而言,我没有看到一种不"泄漏"到全局范围内的方法,因为即使你的表单控件也存在(也是如此).
因此,这是我的问题......
这是我上面提到的模块模式:
<script type="text/javascript">
var myNamespace = (function($) {
var publicInstances = {};
// ***********************
// myObject
publicInstances.myObject = myObject;
function myObject() {
/// <summary>A pointer to this</summary>
var self = this;
this.someProperty = new String();
this.initialize = function() { …Run Code Online (Sandbox Code Playgroud)