1

我遵循的 Javascript 教程总是在使用之前定义,但我的 PHP 书总是在最后定义,实际上指出这被认为是好的做法。

有理由这样做吗?

4

3 回答 3

5

如果您正在执行内联代码(例如在加载时执行),则必须在使用它们的代码之前定义全局变量。

可以按照您认为使代码最整洁和最容易阅读的任何顺序来定义函数。

例如,在这段代码中:

foo();

function foo() {
    alert(x);
}

var x = 4;
​

调用foo()会提醒undefined,因为 x 在调用时还没有值foo(),但是您会注意到foo可以在出现在函数定义之前的代码中调用它,因为所有函数都在任何代码实际执行之前加载。

至于最佳实践,我认为以您能找到的将相关功能模块放在一起的最佳方式组织代码是有意义的,但顺序通常并不重要。我相信您意识到 javascript 没有任何实际上是类的东西。它可以使用函数对象和原型来模拟其他语言所具有的类类行为,但它实际上并没有类,因为它的对象基于原型,而不是类。

于 2012-04-26T00:19:55.097 回答
3

在 Javascript 中,通常的做法是在闭包内声明所有内容,可以是对象或函数,因此您不会污染全局范围。在定义变量时,通常建议在它们作用域的函数顶部声明它们。

Javascript 没有类,但只要记住函数声明函数表达式不同,就可以在任何地方定义对象字面量或构造函数:

function foo () { ... } // Declaration, works anywhere
var foo = function () { ... } // Expression, works only after the assignment

更多信息在这里http://javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/

于 2012-04-26T00:25:46.727 回答
0

在 Javascript 中,必须先定义一个函数才能使用它。所以函数定义必须在使用函数的代码之前。

一些提高页面速度的建议告诉我们将 Javascript 执行放在 HTML 页面的末尾。这样做,当页面和所有元素完全加载时,Javascript 将启动。(见这里的文章

尽管如此,Javascript 的其余用法是将函数声明放在<header>节中,以便定义的函数可以立即在正文的任何​​元素中运行,包括<body>元素本身。您始终可以将引导程序或其他函数执行放在 HTML 页面的末尾。

对于 PHP,它是不同的。

在 PHP 脚本中,您可以在代码中的任何位置定义函数,甚至在使用函数的代码之后。这是可能的,因为 PHP 必须在运行第一行代码之前读取完整的脚本。

此外,为了代码的可读性,PHP 的剩余用途是从算法开始,并将函数定义放在脚本的末尾(或者更常见的是,将函数放在单独的脚本中)。

于 2012-04-26T00:41:43.123 回答