返回
JS函数基础全解,从匿名到构造函数,读完融会贯通!
前端
2023-12-23 13:00:22
匿名函数
匿名函数是指没有名称的函数,通常使用函数表达式来定义。匿名函数可以作为参数传递给其他函数,也可以作为立即执行函数来使用。
创建匿名函数
匿名函数可以通过以下两种方式创建:
- 使用函数表达式:
const fn1 = function () {
// 函数体
};
- 使用箭头函数:
const fn2 = () => {
// 函数体
};
调用匿名函数
匿名函数可以通过以下两种方式调用:
- 直接调用:
fn1();
- 作为参数传递给其他函数:
function callFunction(fn) {
fn();
}
callFunction(fn1);
匿名函数的优点
- 匿名函数可以提高代码的可读性和可维护性。
- 匿名函数可以减少变量的污染。
- 匿名函数可以方便地作为参数传递给其他函数。
构造函数
构造函数是指用于创建对象的函数。构造函数的名称必须与类名相同,并且首字母必须大写。
创建构造函数
构造函数可以通过以下方式创建:
class MyClass {
constructor() {
// 构造函数体
}
}
调用构造函数
构造函数可以通过以下方式调用:
const myObject = new MyClass();
构造函数的优点
- 构造函数可以方便地创建对象。
- 构造函数可以初始化对象的属性和方法。
- 构造函数可以实现类的继承。
函数参数
函数参数是指函数接收的输入值。函数参数可以在函数定义时指定,也可以在函数调用时传递。
指定函数参数
函数参数可以在函数定义时指定,参数类型和名称之间使用冒号分隔,多个参数之间使用逗号分隔。
function myFunction(param1, param2) {
// 函数体
}
传递函数参数
函数参数可以在函数调用时传递,参数值和参数名称之间使用冒号分隔,多个参数之间使用逗号分隔。
myFunction(value1, value2);
函数参数的默认值
函数参数可以指定默认值,如果函数调用时没有传递参数值,则使用默认值。
function myFunction(param1 = "default value") {
// 函数体
}
函数调用
函数调用是指执行函数的过程。函数可以通过以下方式调用:
- 直接调用:
myFunction();
- 作为参数传递给其他函数:
function callFunction(fn) {
fn();
}
callFunction(myFunction);
- 使用事件监听器:
document.addEventListener("click", myFunction);
函数作用域
函数作用域是指函数可以访问的变量和函数的集合。函数作用域包括局部作用域和全局作用域。
局部作用域
局部作用域是指函数内部的变量和函数的集合。局部作用域只在函数执行期间存在,函数执行结束后,局部作用域中的变量和函数将被销毁。
function myFunction() {
// 局部作用域
let localVariable = "local value";
function innerFunction() {
// 局部作用域
let innerVariable = "inner value";
console.log(localVariable); // "local value"
console.log(innerVariable); // "inner value"
}
innerFunction();
}
myFunction();
// 全局作用域
console.log(localVariable); // ReferenceError: localVariable is not defined
console.log(innerVariable); // ReferenceError: innerVariable is not defined
全局作用域
全局作用域是指脚本中的变量和函数的集合。全局作用域在脚本执行期间一直存在,脚本执行结束后,全局作用域中的变量和函数将被销毁。
// 全局作用域
let globalVariable = "global value";
function myFunction() {
// 局部作用域
let localVariable = "local value";
console.log(globalVariable); // "global value"
console.log(localVariable); // "local value"
}
myFunction();
// 全局作用域
console.log(globalVariable); // "global value"
console.log(localVariable); // ReferenceError: localVariable is not defined
闭包
闭包是指可以访问其他函数作用域中的变量和函数的函数。闭包通常用于保存状态或实现私有变量。
function outerFunction() {
// 局部作用域
let outerVariable = "outer value";
function innerFunction() {
// 局部作用域
let innerVariable = "inner value";
console.log(outerVariable); // "outer value"
console.log(innerVariable); // "inner value"
}
return innerFunction;
}
const innerFunction = outerFunction();
// 全局作用域
innerFunction(); // "outer value" "inner value"