前端学习——JS进阶 (Day2)
发布人:shili8
发布时间:2024-12-08 10:07
阅读次数:0
**前端学习——JS进阶 (Day2)**### 前言在前面的文章中,我们已经掌握了 JavaScript 的基本语法和常用方法。今天,我们将继续深入探讨 JavaScript 的进阶内容,包括函数、闭包、作用域链等。
### 一、函数####1. 函数定义JavaScript 中的函数是使用 `function` 关键字定义的。例如:
javascriptfunction add(a, b) { return a + b; }
在这个例子中,我们定义了一个名为 `add` 的函数,它接受两个参数 `a` 和 `b`,并返回它们的和。
####2. 函数调用要使用函数,我们需要将其作为一个表达式来调用。例如:
javascriptconsole.log(add(3,4)); // 输出:7
在这个例子中,我们调用了 `add` 函数,并传递了两个参数 `3` 和 `4`,然后将结果输出到控制台。
####3. 匿名函数JavaScript 中的匿名函数是没有名称的函数。例如:
javascriptvar add = function(a, b) { return a + b; };
在这个例子中,我们定义了一个匿名函数,并将其赋值给变量 `add`。
####4. 函数参数JavaScript 中的函数可以接受多个参数。例如:
javascriptfunction add(a, b, c) { return a + b + c; }
在这个例子中,我们定义了一个名为 `add` 的函数,它接受三个参数 `a`、`b` 和 `c`,并返回它们的和。
####5. 函数返回值JavaScript 中的函数可以返回任意类型的值。例如:
javascriptfunction getPerson() { return { name: 'John', age:30 }; }
在这个例子中,我们定义了一个名为 `getPerson` 的函数,它返回一个对象。
### 二、闭包####1.什么是闭包闭包是一种特殊的函数,它可以访问其外部作用域中的变量。例如:
javascriptfunction outer() { var x =10; return function inner() { console.log(x); }; } var innerFunc = outer(); innerFunc(); // 输出:10
在这个例子中,我们定义了一个名为 `outer` 的函数,它返回一个匿名函数 `inner`。当我们调用 `innerFunc()` 时,`inner` 函数可以访问其外部作用域中的变量 `x`。
####2.闭包的应用闭包有很多应用场景。例如:
javascriptfunction createCounter() { var count =0; return function increment() { count++; console.log(count); }; } var counter1 = createCounter(); counter1(); // 输出:1counter1(); // 输出:2var counter2 = createCounter(); counter2(); // 输出:1
在这个例子中,我们定义了一个名为 `createCounter` 的函数,它返回一个匿名函数 `increment`。当我们调用 `counter1()` 和 `counter2()` 时,它们分别访问其外部作用域中的变量 `count`。
### 三、作用域链####1. 作用域链的定义作用域链是 JavaScript 中的一个重要概念,它决定了一个函数或表达式可以访问哪些变量。例如:
javascriptfunction outer() { var x =10; function inner() { console.log(x); } return inner; } var innerFunc = outer(); innerFunc(); // 输出:10
在这个例子中,我们定义了一个名为 `outer` 的函数,它返回一个匿名函数 `inner`。当我们调用 `innerFunc()` 时,`inner` 函数可以访问其外部作用域中的变量 `x`。
####2. 作用域链的应用作用域链有很多应用场景。例如:
javascriptfunction outer() { var x =10; function inner1() { console.log(x); } function inner2() { var y =20; console.log(y); } return [inner1, inner2]; } var [innerFunc1, innerFunc2] = outer(); innerFunc1(); // 输出:10innerFunc2(); // 输出:20
在这个例子中,我们定义了一个名为 `outer` 的函数,它返回一个数组 `[inner1, inner2]`。当我们调用 `innerFunc1()` 和 `innerFunc2()` 时,它们分别访问其外部作用域中的变量 `x` 和 `y`。
### 总结在本文中,我们学习了 JavaScript 中的函数、闭包和作用域链等重要概念。这些知识可以帮助你更好地理解 JavaScript 的工作原理,并且可以应用于实际开发中。