我在使用的我的代码在我的程序的顺序的麻烦。现在我有一些document.ready(function() { } );事情,有些事情在它外面的一面。每当我移动任何东西(组织或改善我的代码)我弄坏的东西,我猜,因为声明或访问级别(即document.ready(function {});之外的东西无论是为了不能访问它里面的东西的。

任何人有任何见解,以里的东西应位于的javascript明智?

如果一切是document.ready(function() {});内?结果有什么理由让document.ready(function() {});以外的东西吗?结果是由外码document.ready(function() {});人迹罕至中的代码?

有帮助吗?

解决方案

  

1。如果一切是内   的document.ready(函数(){});

没有,我认为的document.ready函数必须是唯一的初始化的事情,分配事件处理程序等。

  

2。没有任何理由,   外面什么   的document.ready(函数(){});

代码重用,和更好的代码的组织。

  

3。距离码   的document.ready(函数(){});   由外码不可访问?

是,在的document.ready创建的变量和对象是从外范围不可访问。

其他提示

应该一切是的document.ready内(函数(){});

是,也不是。在大规模的JavaScript应用程序,我初始化我的主控制器转换成从该事件处理全局范围。但是,代码不需要等待DOM做好准备,具体是:代码,并不依赖于DOM 的。我认为这是相当直截了当。例如,我声明配置对象此事件处理程序以外的类,函数,等等。

是否有任何理由以具有的document.ready的之外的任何内容(功能(){});

当然,对于Reason的上面谈到。主要是,不要求DOM交互代码不应该等待的DOM加载,尤其是如果它可以异步地执行的DOM装载(例如:功能定义,配置对象,等)。

此外,不包括所有在一个事件处理程序代码的让事情更有条理,让你模块化代码,使用正确的设计模式等。

是的document.ready中的代码(函数(){});由外码不可访问?

再次肯定和否定。如果你把它声明为本地与var那是肯定的,它是因为它是本地的事件处理程序的外部范围无法访问;否则,它是在全球范围内,并且是外部范围进行访问。下面是一个例子(这里托管: http://jsbin.com/uriqe

<强>的JavaScript

var foo = function() {
  alert(global);
  return false;
}

$(document).ready(function() {
  global = "you can see me!?";
  alert("global is initiated");
});

<强> HTML

<body>
  <p><a href="#" onclick="foo()">click me</a></p>
</body>

onclick而非$(document).ready()不显眼的方法事件附件被有意用来避免任何疑问/大约具有foo访问参数经由封闭性global

编辑:我想我做到了前面句子清楚,但 onclick用于故意避开全球范围和封闭性,但我不混淆提倡使用onlick 的当然这是一个不好的做法,你不应该使用它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top