是否最好在代码的开头或结尾定义类和函数?

时间:2012-04-26 00:13:51

标签: php javascript coding-style

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

是否有理由以这种或那种方式进行?

3 个答案:

答案 0 :(得分:4)

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

可以按照您认为使代码最干净,最容易阅读的顺序定义函数。

例如,在此代码中:

foo();

function foo() {
    alert(x);
}

var x = 4;
​

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

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

答案 1 :(得分:2)

在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/

答案 2 :(得分:0)

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

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

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

对于PHP来说,它是不同的。

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

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