前端学习——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 的工作原理,并且可以应用于实际开发中。

