📜  函数和执行上下文 makePlans - Javascript (1)

📅  最后修改于: 2023-12-03 15:36:50.024000             🧑  作者: Mango

函数和执行上下文 makePlans - Javascript

在Javascript中,函数是非常重要的概念。函数是可重用的代码块,可用于执行特定任务。 执行上下文是Javascript中一个重要的概念,它是每个函数执行时创建的一种环境。函数和执行上下文紧密相关,本文将介绍Javascript中如何使用函数和执行上下文。

函数

在Javascript中,函数可以通过以下方式创建:

function myFunction(param1, param2) {
  // function body
}

函数可以有零个或多个参数,并且可以返回一个值或没有返回值。函数可以在任何地方定义,包括全局环境和另一个函数中。

function add(a, b) {
  return a + b;
}

let sum = add(2, 3);
console.log(sum); // 输出 5

在上面的示例中,我们定义了一个add函数,它接受两个参数a和b,并返回它们的和。 然后我们调用add函数并将结果赋值给变量sum,然后我们将变量sum打印到控制台。

执行上下文

在Javascript中,每当函数被调用时,都会创建一个新的执行上下文。执行上下文是一个环境,它用于存储变量和函数的值。 它包含三个重要的组成部分:

  1. 变量对象:用于存储变量和函数声明。
  2. 作用域链:用于查找变量和函数。
  3. this值:其中this在函数执行期间引用的对象。
let a = 10;

function myFunction() {
  let b = 20;

  function innerFunction() {
    let c = 30;

    console.log(a, b, c);
  }

  innerFunction();
}

myFunction(); // 输出 10 20 30

在上面的示例中,我们先定义了变量a和函数myFunction,然后我们在这个函数中定义了一个变量b和另一个函数innerFunction。 在innerFunction中,我们定义了一个变量c,并打印变量a、b和c的值。

当我们调用myFunction时,Javascript会创建一个新的执行上下文。 在这个上下文中,变量对象包含了a和myFunction的函数声明。 作用域链包含了myFunction的内部变量a和b,以及全局变量a。 this的值由函数的调用方式确定,在这种情况下,它是全局对象。

当我们调用innerFunction时,Javascript会创建另一个新的执行上下文。 在这个上下文中,变量对象包含了变量c的声明。 作用域链包含了innerFunction的内部变量c,以及myFunction的内部变量a和b,以及最终全局变量a。 this的值也由函数的调用方式确定,在这种情况下,它是全局对象。

总结

函数和执行上下文是Javascript中的两个非常重要的概念。 通过理解它们的工作原理,我们可以更好地了解Javascript中的变量和函数是如何工作的。 在实际编码中,我们需要注意作用域问题,避免变量被错误地覆盖或函数调用方式不正确等问题。