这可能是一个愚蠢的问题,但我是Javascript的新手并急需帮助。
如果Javascript引擎会在函数外部查找全局变量,那么将参数传递给它的重点是什么?你有什么收获?
我理解全局变量通常不受欢迎,但我仍然不理解传递变量的目的。它与数据封装有关吗?
答案 0 :(得分:4)
程序员用它来描述不同类型的函数。这里有几个:
如果你想头疼,你可以看看他们中的一些。关键是计算机科学和工程的进步一直是关于降低复杂性。我们花了很多时间考虑编写函数来实现该目标的最佳方法。希望你可以一次把你的程序的一小部分填入脑中,并理解这些部分,而不必同时了解整个程序的整体功能,或者详细实现所有其他功能的内部。使用全局变量的函数不能很好地执行此操作,因为:
另一方面,如果您明确传入函数需要操作的所有数据,并显式返回所有结果:
等优点。
答案 1 :(得分:1)
如果你只是要使用函数所使用的全局变量,那么你总是必须知道函数的内部工作方式以及你的全局变量名称必须使它们起作用。
如果使用全局变量,像Math.abs(n)这样的东西很难在一行中调用两次。
答案 2 :(得分:1)
函数是代码的可重用组件,它在提供的变量上执行特定的片段,表现出不同的行为。 封装来自面向对象。函数更多的是为程序提供结构。 此外,如果方法的访问变量存在于上下文中而不是全局变量,则不应破坏方法的执行时间。
答案 3 :(得分:0)
如果你不需要将参数传递给函数,那么你真的不需要函数。
通常(并且应该)使用函数来提供代码重用 - 在不同的变量上使用相同的函数。如果函数访问全局变量,那么每次使用它时它都会执行相同的操作。如果我传递参数,我可以让它在每次使用时执行不同的操作(基于这些不同的参数)。
答案 4 :(得分:0)
其中一个主要好处是它可以保留附近功能所需的所有信息。可以仅查看函数本身并了解其输入是什么,它做什么以及它的输出是什么。如果您使用全局变量而不是将参数传递给函数,则必须查看代码以查找函数运行的数据。
这只是一个的好处,很多,但很容易理解。
答案 5 :(得分:0)
也就是说,变量全局变为namesapce可能很有用,特别是如果你使用类似jquery选择器的东西,并且你想为性能而缓存。
答案 6 :(得分:0)
这真的是一个javascript问题吗?我还没有遇到过没有某种形式的全局变量的语言。