Javascript函数作用域

Javascript函数作用域,javascript,Javascript,这也许是一个愚蠢的问题,但我对Javascript还不熟悉,迫切需要帮助 如果Javascript引擎将查找函数外部的全局变量,那么向其传递参数有什么意义?你得到了什么 我知道全局变量通常是不受欢迎的,但我仍然不明白传递变量的目的。它与数据封装有关吗?如果不需要将参数传递给函数,那么实际上就不需要函数 函数通常(并且应该)用于提供代码重用——在不同的变量上使用相同的函数。如果函数访问全局变量,那么每次我使用它时,它都会执行相同的操作。如果我传递参数,我可以让它在每次使用时执行不同的操作(基于这些

这也许是一个愚蠢的问题,但我对Javascript还不熟悉,迫切需要帮助

如果Javascript引擎将查找函数外部的全局变量,那么向其传递参数有什么意义?你得到了什么


我知道全局变量通常是不受欢迎的,但我仍然不明白传递变量的目的。它与数据封装有关吗?

如果不需要将参数传递给函数,那么实际上就不需要函数


函数通常(并且应该)用于提供代码重用——在不同的变量上使用相同的函数。如果函数访问全局变量,那么每次我使用它时,它都会执行相同的操作。如果我传递参数,我可以让它在每次使用时执行不同的操作(基于这些不同的参数)。

如果不需要将参数传递给函数,那么实际上就不需要函数


函数通常(并且应该)用于提供代码重用——在不同的变量上使用相同的函数。如果函数访问全局变量,那么每次我使用它时,它都会执行相同的操作。如果我传递参数,我可以让它在每次使用时执行不同的操作(基于这些不同的参数)。

主要优点之一是它将函数所需的所有信息保存在附近。只看函数本身就可以理解它的输入是什么,它做什么,它的输出是什么。如果使用全局变量而不是将参数传递给函数,则必须查看所有代码,以找到函数操作的数据


这只是许多好处中的一个,但很容易理解。

主要好处之一是它将函数所需的所有信息保存在附近。只看函数本身就可以理解它的输入是什么,它做什么,它的输出是什么。如果使用全局变量而不是将参数传递给函数,则必须查看所有代码,以找到函数操作的数据

这只是许多好处中的一个,但很容易理解。

  • 全局变量(任何语言)有时都会过时。如果有机会,最好声明、初始化并在本地使用它们。你必须能够相信你正在使用的东西
  • 类似地,如果某个人/某物可以更新您的全局变量,那么您必须能够信任使用这些变量时所产生的结果
  • 全局变量并不是每件事都需要的,所以为什么要让它们一直挂着呢
这就是说,名称空间的全局变量可能非常有用,特别是当您使用jquery选择器之类的东西,并且为了性能需要缓存时。

  • 全局变量(任何语言)有时都会过时。如果有机会,最好声明、初始化并在本地使用它们。你必须能够相信你正在使用的东西
  • 类似地,如果某个人/某物可以更新您的全局变量,那么您必须能够信任使用这些变量时所产生的结果
  • 全局变量并不是每件事都需要的,所以为什么要让它们一直挂着呢

也就是说,名称apce的全局变量可能非常有用,特别是当您使用jquery选择器之类的工具并且为了性能需要缓存时。

如果您只打算使用函数所处理的全局变量,那么您必须始终了解函数的内部工作方式以及全局变量名的用途让他们工作


此外,如果使用全局变量,像Math.abs(n)这样的函数很难在一行中调用两次。

如果您只使用函数所处理的全局变量,那么您必须始终了解函数的内部工作方式,以及全局变量名必须是什么才能工作


另外,如果使用全局变量,像Math.abs(n)这样的东西很难在一行中调用两次。

这真的是一个javascript问题吗?我还没有遇到过一种语言没有某种形式的全局变量

这真的是一个javascript问题吗?我还没有遇到过一种语言没有某种形式的全局变量

函数是代码的可重用组件,它在提供的变量上执行特定的代码片段,显示不同的行为。 封装源于面向对象。函数更适合于为程序提供结构。
此外,如果它访问的变量存在于上下文中而不是全局变量,则不应破坏方法的执行时间。

函数是代码的可重用组件,在提供的变量上执行特定片段,表现出不同的行为。 封装源于面向对象。函数更适合于为程序提供结构。
此外,如果方法访问的变量存在于上下文中而不是全局变量,则不应破坏方法的执行时间。

程序员使用一些神奇的词语来描述不同类型的函数。以下是一些:

  • 再入者
  • 线程安全
  • 引用透明
  • 幂等元
  • 纯洁的
  • 副作用
如果你想头痛的话,可以去看看。关键是计算机科学和工程的进步一直都是为了降低复杂性。我们花了相当多的时间思考编写函数以实现该目标的最佳方法。希望您可以一次将程序中的一小部分塞进您的大脑,并理解这些部分,而不必同时理解整个程序的整体功能