这也许是一个愚蠢的问题,但我是Javascript的新手,绝望的帮助。Javascript函数范围
如果Javascript引擎会在函数外寻找全局变量,那么传递参数到底有什么意义呢?你有什么收获?
我明白,全局变量通常是皱眉,但我仍然不明白传递变量的目的。它与数据封装有关吗?
这也许是一个愚蠢的问题,但我是Javascript的新手,绝望的帮助。Javascript函数范围
如果Javascript引擎会在函数外寻找全局变量,那么传递参数到底有什么意义呢?你有什么收获?
我明白,全局变量通常是皱眉,但我仍然不明白传递变量的目的。它与数据封装有关吗?
程序员用一些神奇的词来描述不同类型的函数。这里有几个:
如果你可以看看其中的一些了你想要头痛。关键是计算机科学和工程学的进步始终是降低复杂性。我们花了很多时间考虑编写函数来达到这个目标的最佳方式。希望您可以一次性将您程序的一小部分内容放入脑中,并理解这些部分,而不必同时理解整个程序的整体功能,或者详细实现所有其他功能的内部功能。使用全局变量不能做到这一点很好的函数,因为:
在另一方面,如果你明确地传递所有的功能需要操作的数据,并明确地返回所有的结果:如果出现问题与任何这些变量的
等优点。
如果你不需要传递给函数的参数,那么,你真的不需要函数。
函数通常(而且应该)用于提供代码重用 - 在不同的变量上使用相同的函数。如果一个函数访问全局变量,那么每次使用它时都会执行相同的操作。如果我传递参数,每次使用参数时都可以使其执行不同的操作(基于这些不同的参数)。
其中一个主要的好处是它保留了附近所有功能需要的信息。只能看看函数本身,理解它的输入是什么,它做了什么,输出是什么,这成为可能。如果使用全局变量而不是将参数传递给函数,则必须遍历代码来查找函数在其上运行的数据。
这只是一个好处很多,但很容易理解。
也就是说,变量global到namesapce可能是有用的,特别是如果您使用类似jquery选择器的东西,并且想要缓存性能。
如果您只打算使用函数所处理的全局变量,那么您将始终需要知道函数的内部工作方式以及您的全局变量名称对于他们的工作原理。
此外,如果使用全局变量,则类似于Math.abs(n)将很难在一行中调用两次。
函数是您的代码的可重用组件,它在提供的变量上执行一个特定代码段,展现出不同的行为。 封装来自面向对象。函数更多的是为你的程序提供结构。 另外,如果访问的变量存在于上下文中而不是全局,则不应损害方法的执行时间。
您获得理智。您当然可以在不传递参数的情况下创建程序。但最终你会弄得一团糟。 – Nosredna 2009-08-12 04:02:00