我遵循的Javascript教程总是在使用之前定义,但我的PHP书总是在最后定义,并且事实上指出这被认为是好的做法。
是否有理由以这种或那种方式进行?
答案 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>