首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >JavaScript函数、对象与数组详解

JavaScript函数、对象与数组详解

作者头像
安全风信子
发布2025-11-13 13:11:33
发布2025-11-13 13:11:33
1410
举报
文章被收录于专栏:AI SPPECHAI SPPECH

引言

在上一篇文章中,我们学习了JavaScript的基础语法和环境配置,现在让我们深入学习JavaScript的核心概念:函数、对象和数组。这些概念是JavaScript编程的基础,掌握它们将帮助你写出更加灵活和强大的代码。

在2025年,随着AI技术的发展,JavaScript与AI的结合越来越紧密。了解这些核心概念不仅可以帮助你更好地理解AI工具生成的代码,还能让你更有效地利用AI辅助来提升开发效率。本文将通过详细的讲解和丰富的示例,帮助你掌握这些重要概念,并通过实战练习巩固所学知识。

|要点|描述|\n|-|-|\n|痛点|函数、对象和数组概念抽象难以理解;不知道如何在实际项目中应用;难以充分利用AI辅助工具|\n|方案|通过详细的讲解、丰富的示例和实战练习,帮助你深入理解这些核心概念|\n|驱动|掌握这些核心概念是成为JavaScript开发者的关键,也是利用AI提升开发效率的基础|\n

目录

|章节|内容|\n|-|-|\n|1|JavaScript函数详解|\n|2|JavaScript对象详解|\n|3|JavaScript数组详解|\n|4|使用AI助手优化函数、对象和数组操作|\n|5|实战练习:构建一个简单的待办事项管理应用|\n

1. JavaScript函数详解

函数是JavaScript中的重要概念,它允许我们封装可重用的代码块。在本节中,我们将深入学习JavaScript函数的各种特性和用法。

1.1 函数的定义方式

JavaScript提供了多种定义函数的方式:

1.1.1 函数声明
代码语言:javascript
复制
// 函数声明
function greet(name) {
    return 'Hello, ' + name + '!';
}

console.log(greet('JavaScript')); // 输出:Hello, JavaScript!
1.1.2 函数表达式
代码语言:javascript
复制
// 函数表达式
const calculateSum = function(a, b) {
    return a + b;
};

console.log(calculateSum(5, 3)); // 输出:8
1.1.3 箭头函数

ES6引入的箭头函数提供了更简洁的语法:

代码语言:javascript
复制
// 箭头函数
const multiply = (a, b) => a * b;

console.log(multiply(4, 7)); // 输出:28

// 带花括号的箭头函数(当函数体有多行代码时)
const processNumbers = (numbers) => {
    const sum = numbers.reduce((acc, num) => acc + num, 0);
    const average = sum / numbers.length;
    return {
        sum,
        average
    };
};

console.log(processNumbers([1, 2, 3, 4, 5])); // 输出:{ sum: 15, average: 3 }
1.1.4 函数构造函数

虽然不常用,但我们也可以使用Function构造函数来创建函数:

代码语言:javascript
复制
const sayHello = new Function('name', 'return "Hello, " + name + "!";');
console.log(sayHello('World')); // 输出:Hello, World!
1.2 函数的参数

JavaScript函数的参数处理非常灵活,包括默认参数、剩余参数和解构参数等特性。

1.2.1 默认参数

ES6引入了默认参数,允许我们为函数参数设置默认值:

代码语言:javascript
复制
function greet(name = 'Guest') {
    return 'Hello, ' + name + '!';
}

console.log(greet()); // 输出:Hello, Guest!
console.log(greet('JavaScript')); // 输出:Hello, JavaScript!
1.2.2 剩余参数

剩余参数允许我们将多个参数收集到一个数组中:

代码语言:javascript
复制
function calculateSum(...numbers) {
    return numbers.reduce((acc, num) => acc + num, 0);
}

console.log(calculateSum(1, 2, 3, 4, 5)); // 输出:15
1.2.3 解构参数

我们可以使用解构赋值语法来提取对象或数组中的值作为函数参数:

代码语言:javascript
复制
// 解构对象参数
function printUserInfo({ name, age, city }) {
    console.log(`Name: ${name}, Age: ${age}, City: ${city}`);
}

const user = {
    name: '张三',
    age: 30,
    city: '北京',
    job: 'Developer'
};

printUserInfo(user); // 输出:Name: 张三, Age: 30, City: 北京

// 解构数组参数
function printFirstTwoElements([first, second]) {
    console.log(`First: ${first}, Second: ${second}`);
}

const fruits = ['苹果', '香蕉', '橙子', '葡萄'];
printFirstTwoElements(fruits); // 输出:First: 苹果, Second: 香蕉
1.3 函数的作用域和闭包
1.3.1 作用域

JavaScript中有全局作用域和局部作用域(函数作用域和块级作用域):

代码语言:javascript
复制
// 全局作用域
const globalVar = 'I am global';

function example() {
    // 函数作用域
    const functionVar = 'I am in function';
    
    if (true) {
        // 块级作用域(ES6引入)
        const blockVar = 'I am in block';
        console.log(blockVar); // 输出:I am in block
    }
    
    console.log(functionVar); // 输出:I am in function
    // console.log(blockVar); // 错误:blockVar is not defined
}

example();
console.log(globalVar); // 输出:I am global
// console.log(functionVar); // 错误:functionVar is not defined
1.3.2 闭包

闭包是JavaScript中的重要概念,它允许函数访问并操作其作用域外部的变量:

代码语言:javascript
复制
function createCounter() {
    let count = 0; // 这个变量被闭包引用
    
    return function() {
        count++;
        return count;
    };
}

const counter = createCounter();
console.log(counter()); // 输出:1
console.log(counter()); // 输出:2
console.log(counter()); // 输出:3

在这个例子中,内部函数形成了一个闭包,它可以访问并修改外部函数createCounter中的count变量,即使createCounter函数已经执行完毕。

2. JavaScript对象详解

对象是JavaScript的基本数据类型之一,它允许我们以键值对的形式存储和组织数据。在本节中,我们将深入学习JavaScript对象的各种特性和用法。

2.1 对象的创建方式

JavaScript提供了多种创建对象的方式:

2.1.1 对象字面量

对象字面量是创建对象最常用的方式:

代码语言:javascript
复制
const person = {
    name: '张三',
    age: 30,
    job: 'Developer',
    greet: function() {
        return `Hello, my name is ${this.name}.`;
    }
};

console.log(person.name); // 输出:张三
console.log(person.greet()); // 输出:Hello, my name is 张三.
2.1.2 Object构造函数

我们也可以使用Object构造函数来创建对象:

代码语言:javascript
复制
const person = new Object();
person.name = '张三';
person.age = 30;
person.greet = function() {
    return `Hello, my name is ${this.name}.`;
};

console.log(person.name); // 输出:张三
2.1.3 构造函数

构造函数允许我们创建多个具有相同属性和方法的对象实例:

代码语言:javascript
复制
// 构造函数
function Person(name, age, job) {
    this.name = name;
    this.age = age;
    this.job = job;
    this.greet = function() {
        return `Hello, my name is ${this.name}.`;
    };
}

// 创建对象实例
const person1 = new Person('张三', 30, 'Developer');
const person2 = new Person('李四', 25, 'Designer');

console.log(person1.name); // 输出:张三
console.log(person2.name); // 输出:李四
2.1.4 类(ES6)

ES6引入了类的概念,提供了更接近传统面向对象编程的语法:

代码语言:javascript
复制
// 类定义
class Person {
    constructor(name, age, job) {
        this.name = name;
        this.age = age;
        this.job = job;
    }
    
    greet() {
        return `Hello, my name is ${this.name}.`;
    }
}

// 创建对象实例
const person = new Person('张三', 30, 'Developer');
console.log(person.name); // 输出:张三
console.log(person.greet()); // 输出:Hello, my name is 张三.
2.2 对象的属性操作

JavaScript提供了多种操作对象属性的方法:

2.2.1 访问属性
代码语言:javascript
复制
const person = { name: '张三', age: 30 };

// 点表示法
console.log(person.name); // 输出:张三

// 方括号表示法
console.log(person['age']); // 输出:30

// 方括号表示法允许使用变量访问属性
const propertyName = 'name';
console.log(person[propertyName]); // 输出:张三
2.2.2 添加和修改属性
代码语言:javascript
复制
const person = { name: '张三' };

// 添加新属性
person.age = 30;
person['job'] = 'Developer';

// 修改现有属性
person.name = '李四';

console.log(person); // 输出:{ name: '李四', age: 30, job: 'Developer' }
2.2.3 删除属性

我们可以使用delete操作符删除对象的属性:

代码语言:javascript
复制
const person = { name: '张三', age: 30, job: 'Developer' };

// 删除属性
delete person.job;

console.log(person); // 输出:{ name: '张三', age: 30 }
2.3 对象的方法

对象的方法是存储在对象属性中的函数:

代码语言:javascript
复制
const calculator = {
    add: function(a, b) {
        return a + b;
    },
    subtract: function(a, b) {
        return a - b;
    },
    multiply: function(a, b) {
        return a * b;
    },
    divide: function(a, b) {
        if (b === 0) {
            return 'Cannot divide by zero';
        }
        return a / b;
    }
};

console.log(calculator.add(5, 3)); // 输出:8
console.log(calculator.multiply(4, 7)); // 输出:28

ES6引入了简写的方法定义语法:

代码语言:javascript
复制
const calculator = {
    add(a, b) {
        return a + b;
    },
    subtract(a, b) {
        return a - b;
    }
    // 其他方法...
};

3. JavaScript数组详解

数组是JavaScript中用于存储多个值的有序集合。在本节中,我们将深入学习JavaScript数组的各种特性和用法。

3.1 数组的创建方式

JavaScript提供了多种创建数组的方式:

3.1.1 数组字面量

数组字面量是创建数组最常用的方式:

代码语言:javascript
复制
const fruits = ['苹果', '香蕉', '橙子', '葡萄'];
console.log(fruits[0]); // 输出:苹果
console.log(fruits.length); // 输出:4
3.1.2 Array构造函数

我们也可以使用Array构造函数来创建数组:

代码语言:javascript
复制
// 创建包含指定元素的数组
const numbers = new Array(1, 2, 3, 4, 5);
console.log(numbers); // 输出:[1, 2, 3, 4, 5]

// 创建指定长度的空数组
const emptyArray = new Array(5);
console.log(emptyArray.length); // 输出:5
3.1.3 Array.of()方法

ES6引入的Array.of()方法创建一个包含所有参数的数组:

代码语言:javascript
复制
const numbers = Array.of(1, 2, 3, 4, 5);
console.log(numbers); // 输出:[1, 2, 3, 4, 5]

// 与Array构造函数的区别
const array1 = Array(5); // 创建一个长度为5的空数组
const array2 = Array.of(5); // 创建一个包含单个元素5的数组
console.log(array1.length); // 输出:5
console.log(array2.length); // 输出:1
3.1.4 Array.from()方法

ES6引入的Array.from()方法从类数组对象或可迭代对象创建一个新的数组:

代码语言:javascript
复制
// 从字符串创建数组
const chars = Array.from('hello');
console.log(chars); // 输出:['h', 'e', 'l', 'l', 'o']

// 从Set创建数组
const set = new Set(['a', 'b', 'c']);
const array = Array.from(set);
console.log(array); // 输出:['a', 'b', 'c']

// 使用映射函数
const numbers = [1, 2, 3];
const doubledNumbers = Array.from(numbers, x => x * 2);
console.log(doubledNumbers); // 输出:[2, 4, 6]
3.2 数组的常用方法

JavaScript数组提供了丰富的内置方法,用于操作和转换数组。以下是一些最常用的数组方法:

3.2.1 添加和删除元素
代码语言:javascript
复制
const fruits = ['苹果', '香蕉'];

// push():向数组末尾添加元素
fruits.push('橙子', '葡萄');
console.log(fruits); // 输出:['苹果', '香蕉', '橙子', '葡萄']

// pop():删除并返回数组的最后一个元素
const lastFruit = fruits.pop();
console.log(lastFruit); // 输出:葡萄
console.log(fruits); // 输出:['苹果', '香蕉', '橙子']

// unshift():向数组开头添加元素
fruits.unshift('草莓');
console.log(fruits); // 输出:['草莓', '苹果', '香蕉', '橙子']

// shift():删除并返回数组的第一个元素
const firstFruit = fruits.shift();
console.log(firstFruit); // 输出:草莓
console.log(fruits); // 输出:['苹果', '香蕉', '橙子']
3.2.2 数组遍历方法
代码语言:javascript
复制
const numbers = [1, 2, 3, 4, 5];

// forEach():对数组的每个元素执行一次提供的函数
numbers.forEach(function(number, index) {
    console.log(`Index ${index}: ${number}`);
});
// 输出:
// Index 0: 1
// Index 1: 2
// Index 2: 3
// Index 3: 4
// Index 4: 5

// map():创建一个新数组,其结果是对数组中的每个元素调用提供的函数
const doubledNumbers = numbers.map(function(number) {
    return number * 2;
});
console.log(doubledNumbers); // 输出:[2, 4, 6, 8, 10]

// filter():创建一个新数组,包含所有通过提供函数测试的元素
const evenNumbers = numbers.filter(function(number) {
    return number % 2 === 0;
});
console.log(evenNumbers); // 输出:[2, 4]

// reduce():对数组中的元素执行一个reducer函数,将其结果汇总为单个值
const sum = numbers.reduce(function(acc, number) {
    return acc + number;
}, 0);
console.log(sum); // 输出:15

// find():返回数组中满足提供的测试函数的第一个元素的值
const found = numbers.find(function(number) {
    return number > 3;
});
console.log(found); // 输出:4

// some():测试数组中是否至少有一个元素通过了提供的函数测试
const hasEvenNumber = numbers.some(function(number) {
    return number % 2 === 0;
});
console.log(hasEvenNumber); // 输出:true

// every():测试数组中是否所有元素都通过了提供的函数测试
const allPositive = numbers.every(function(number) {
    return number > 0;
});
console.log(allPositive); // 输出:true
3.2.3 数组排序和搜索
代码语言:javascript
复制
const fruits = ['香蕉', '苹果', '橙子', '葡萄'];

// sort():对数组元素进行排序
fruits.sort();
console.log(fruits); // 输出:['苹果', '橙子', '葡萄', '香蕉']

// reverse():反转数组中元素的顺序
fruits.reverse();
console.log(fruits); // 输出:['香蕉', '葡萄', '橙子', '苹果']

// indexOf():返回数组中第一次出现给定元素的索引,如果不存在则返回-1
const index = fruits.indexOf('橙子');
console.log(index); // 输出:2

// includes():判断数组是否包含给定元素
const hasApple = fruits.includes('苹果');
console.log(hasApple); // 输出:true

4. 使用AI助手优化函数、对象和数组操作

在2025年,AI技术已经成为编程的强大助手。下面介绍几种利用AI工具优化JavaScript函数、对象和数组操作的方法。

4.1 AI代码优化器

AI代码优化器可以分析你的JavaScript代码,并提供优化建议,使你的代码更加高效、简洁和易读。

例如,假设你有以下数组操作代码:

代码语言:javascript
复制
function processData(data) {
    let result = [];
    for (let i = 0; i < data.length; i++) {
        if (data[i].age > 18) {
            result.push({
                name: data[i].name.toUpperCase(),
                age: data[i].age
            });
        }
    }
    return result;
}

AI代码优化器可能会建议你使用数组的filtermap方法来优化这段代码:

代码语言:javascript
复制
function processData(data) {
    return data
        .filter(person => person.age > 18)
        .map(person => ({
            name: person.name.toUpperCase(),
            age: person.age
        }));
}
4.2 AI代码解释器

AI代码解释器可以帮助你理解复杂的JavaScript函数、对象和数组操作,解释代码的功能、原理和潜在问题。

例如,对于以下使用reduce方法的复杂代码:

代码语言:javascript
复制
function transformData(data) {
    return data.reduce((acc, item) => {
        const key = item.category;
        if (!acc[key]) {
            acc[key] = [];
        }
        acc[key].push(item.value);
        return acc;
    }, {});
}

AI代码解释器可以帮助你理解这段代码是如何将数组数据按类别分组的。

4.3 AI代码生成器

AI代码生成器可以根据你的需求生成JavaScript函数、对象和数组操作的代码片段,帮助你快速实现功能。

例如,你可以告诉AI:“帮我生成一个JavaScript函数,用于深度合并两个对象”,AI会生成相应的代码:

代码语言:javascript
复制
function deepMerge(obj1, obj2) {
    const result = { ...obj1 };
    
    for (const key in obj2) {
        if (obj2.hasOwnProperty(key)) {
            if (obj2[key] instanceof Object && key in result && result[key] instanceof Object) {
                result[key] = deepMerge(result[key], obj2[key]);
            } else {
                result[key] = obj2[key];
            }
        }
    }
    
    return result;
}

5. 实战练习:构建一个简单的待办事项管理应用

现在,让我们通过一个实际的项目来巩固所学的JavaScript函数、对象和数组的知识。我们将构建一个简单的待办事项管理应用。

5.1 项目概述

我们将创建一个待办事项管理应用,该应用可以:

  1. 添加新的待办事项
  2. 查看所有待办事项
  3. 将待办事项标记为已完成
  4. 删除待办事项
  5. 过滤待办事项(全部、已完成、未完成)
5.2 实现步骤
  1. 创建一个名为todo-app的文件夹
  2. 在该文件夹中创建index.htmlapp.js文件
  3. index.html中添加以下内容:
代码语言:javascript
复制
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>待办事项管理应用</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            max-width: 600px;
            margin: 0 auto;
            padding: 20px;
        }
        .container {
            background-color: #f5f5f5;
            padding: 20px;
            border-radius: 8px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
        }
        h1 {
            color: #333;
            text-align: center;
        }
        .input-group {
            display: flex;
            margin-bottom: 20px;
        }
        input[type="text"] {
            flex: 1;
            padding: 10px;
            border: 1px solid #ddd;
            border-radius: 4px 0 0 4px;
        }
        button {
            padding: 10px 15px;
            background-color: #4CAF50;
            color: white;
            border: none;
            cursor: pointer;
        }
        .add-btn {
            border-radius: 0 4px 4px 0;
        }
        .filter-buttons {
            display: flex;
            justify-content: center;
            margin-bottom: 20px;
        }
        .filter-buttons button {
            margin: 0 5px;
            border-radius: 4px;
        }
        .active-filter {
            background-color: #2196F3;
        }
        ul {
            list-style-type: none;
            padding: 0;
        }
        li {
            padding: 10px;
            background-color: white;
            margin-bottom: 10px;
            border-radius: 4px;
            display: flex;
            align-items: center;
        }
        .todo-text {
            flex: 1;
            margin: 0 10px;
        }
        .completed {
            text-decoration: line-through;
            color: #888;
        }
        .delete-btn {
            background-color: #f44336;
            border-radius: 4px;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>待办事项管理</h1>
        
        <div class="input-group">
            <input type="text" id="todoInput" placeholder="添加新的待办事项...">
            <button id="addBtn" class="add-btn">添加</button>
        </div>
        
        <div class="filter-buttons">
            <button id="allBtn" class="filter-btn active-filter">全部</button>
            <button id="activeBtn" class="filter-btn">未完成</button>
            <button id="completedBtn" class="filter-btn">已完成</button>
        </div>
        
        <ul id="todoList"></ul>
    </div>
    
    <script src="app.js"></script>
</body>
</html>
  1. app.js中添加以下内容:
代码语言:javascript
复制
// 等待DOM加载完成
document.addEventListener('DOMContentLoaded', function() {
    // 获取DOM元素
    const todoInput = document.getElementById('todoInput');
    const addBtn = document.getElementById('addBtn');
    const todoList = document.getElementById('todoList');
    const allBtn = document.getElementById('allBtn');
    const activeBtn = document.getElementById('activeBtn');
    const completedBtn = document.getElementById('completedBtn');
    
    // 待办事项数组
    let todos = [];
    
    // 初始化应用
    initApp();
    
    // 添加待办事项按钮点击事件
    addBtn.addEventListener('click', addTodo);
    
    // 按Enter键添加待办事项
    todoInput.addEventListener('keypress', function(event) {
        if (event.key === 'Enter') {
            addTodo();
        }
    });
    
    // 筛选按钮点击事件
    allBtn.addEventListener('click', function() {
        setActiveFilter('all');
        renderTodos('all');
    });
    
    activeBtn.addEventListener('click', function() {
        setActiveFilter('active');
        renderTodos('active');
    });
    
    completedBtn.addEventListener('click', function() {
        setActiveFilter('completed');
        renderTodos('completed');
    });
    
    // 初始化应用
    function initApp() {
        // 从localStorage加载待办事项
        loadTodos();
        // 渲染待办事项列表
        renderTodos('all');
    }
    
    // 添加待办事项
    function addTodo() {
        const text = todoInput.value.trim();
        
        if (text) {
            // 创建新的待办事项对象
            const todo = {
                id: Date.now(), // 使用时间戳作为唯一ID
                text: text,
                completed: false
            };
            
            // 添加到数组
            todos.push(todo);
            
            // 保存到localStorage
            saveTodos();
            
            // 渲染待办事项列表
            renderTodos(getActiveFilter());
            
            // 清空输入框
            todoInput.value = '';
        }
    }
    
    // 切换待办事项完成状态
    function toggleTodo(id) {
        todos = todos.map(todo => {
            if (todo.id === id) {
                return { ...todo, completed: !todo.completed };
            }
            return todo;
        });
        
        // 保存到localStorage
        saveTodos();
        
        // 渲染待办事项列表
        renderTodos(getActiveFilter());
    }
    
    // 删除待办事项
    function deleteTodo(id) {
        todos = todos.filter(todo => todo.id !== id);
        
        // 保存到localStorage
        saveTodos();
        
        // 渲染待办事项列表
        renderTodos(getActiveFilter());
    }
    
    // 渲染待办事项列表
    function renderTodos(filter) {
        // 清空待办事项列表
        todoList.innerHTML = '';
        
        // 根据筛选条件获取待办事项
        let filteredTodos = [];
        
        switch(filter) {
            case 'active':
                filteredTodos = todos.filter(todo => !todo.completed);
                break;
            case 'completed':
                filteredTodos = todos.filter(todo => todo.completed);
                break;
            default: // 'all'
                filteredTodos = todos;
        }
        
        // 如果没有待办事项,显示提示信息
        if (filteredTodos.length === 0) {
            const emptyMessage = document.createElement('li');
            emptyMessage.textContent = '没有待办事项!';
            emptyMessage.style.textAlign = 'center';
            emptyMessage.style.color = '#888';
            todoList.appendChild(emptyMessage);
            return;
        }
        
        // 创建并添加待办事项元素
        filteredTodos.forEach(todo => {
            const li = document.createElement('li');
            
            // 创建复选框
            const checkbox = document.createElement('input');
            checkbox.type = 'checkbox';
            checkbox.checked = todo.completed;
            checkbox.addEventListener('change', function() {
                toggleTodo(todo.id);
            });
            
            // 创建待办事项文本
            const textSpan = document.createElement('span');
            textSpan.textContent = todo.text;
            textSpan.className = 'todo-text';
            if (todo.completed) {
                textSpan.classList.add('completed');
            }
            
            // 创建删除按钮
            const deleteBtn = document.createElement('button');
            deleteBtn.textContent = '删除';
            deleteBtn.className = 'delete-btn';
            deleteBtn.addEventListener('click', function() {
                deleteTodo(todo.id);
            });
            
            // 添加元素到li
            li.appendChild(checkbox);
            li.appendChild(textSpan);
            li.appendChild(deleteBtn);
            
            // 添加li到待办事项列表
            todoList.appendChild(li);
        });
    }
    
    // 保存待办事项到localStorage
    function saveTodos() {
        localStorage.setItem('todos', JSON.stringify(todos));
    }
    
    // 从localStorage加载待办事项
    function loadTodos() {
        const todosJSON = localStorage.getItem('todos');
        if (todosJSON) {
            todos = JSON.parse(todosJSON);
        }
    }
    
    // 设置活动的筛选按钮
    function setActiveFilter(filter) {
        // 移除所有筛选按钮的活动状态
        allBtn.classList.remove('active-filter');
        activeBtn.classList.remove('active-filter');
        completedBtn.classList.remove('active-filter');
        
        // 设置当前筛选按钮的活动状态
        switch(filter) {
            case 'active':
                activeBtn.classList.add('active-filter');
                break;
            case 'completed':
                completedBtn.classList.add('active-filter');
                break;
            default: // 'all'
                allBtn.classList.add('active-filter');
        }
    }
    
    // 获取活动的筛选按钮
    function getActiveFilter() {
        if (allBtn.classList.contains('active-filter')) {
            return 'all';
        } else if (activeBtn.classList.contains('active-filter')) {
            return 'active';
        } else if (completedBtn.classList.contains('active-filter')) {
            return 'completed';
        }
        return 'all';
    }
});
5.3 运行与测试
  1. 在浏览器中打开index.html文件
  2. 添加新的待办事项
  3. 标记待办事项为已完成
  4. 删除待办事项
  5. 使用筛选功能查看不同状态的待办事项
  6. 刷新页面,验证待办事项是否被保存
5.4 项目分析

这个待办事项管理应用充分利用了JavaScript的函数、对象和数组特性:

  1. 函数:使用了多个函数来组织代码,如addTodotoggleTododeleteTodo
  2. 对象:每个待办事项都是一个对象,包含idtextcompleted属性
  3. 数组:使用数组存储待办事项列表,并使用数组方法如mapfilter等来操作数据
  4. AI辅助:你可以使用AI代码优化器来优化这段代码,使用AI代码解释器来理解复杂的部分

结论

通过本文的学习,你已经掌握了JavaScript的核心概念:函数、对象和数组。这些概念是JavaScript编程的基础,掌握它们将帮助你写出更加灵活和强大的代码。

在2025年,随着AI技术的发展,JavaScript与AI的结合越来越紧密。了解这些核心概念不仅可以帮助你更好地理解AI工具生成的代码,还能让你更有效地利用AI辅助来提升开发效率。

通过实战练习,你已经将所学的知识应用到实际项目中,这是学习编程的最佳方式。继续保持实践,你将很快成为一名熟练的JavaScript开发者。

|要点|描述|\n|-|-|\n|价值|深入理解JavaScript函数、对象和数组的核心概念,能够应用到实际项目中|\n|行动|继续学习JavaScript的高级特性,如异步编程、DOM操作等,进一步提升编程技能|\n

参考

|来源|描述|\n|-|-|\n|MDN Web Docs|JavaScript函数、对象和数组的官方文档|\n|JavaScript.info|JavaScript教程与进阶指南|\n|W3Schools|JavaScript在线教程|\n|GitHub|JavaScript开源项目与示例代码|\n|Stack Overflow|编程问答社区

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 目录
  • 1. JavaScript函数详解
    • 1.1 函数的定义方式
      • 1.1.1 函数声明
      • 1.1.2 函数表达式
      • 1.1.3 箭头函数
      • 1.1.4 函数构造函数
    • 1.2 函数的参数
      • 1.2.1 默认参数
      • 1.2.2 剩余参数
      • 1.2.3 解构参数
    • 1.3 函数的作用域和闭包
      • 1.3.1 作用域
      • 1.3.2 闭包
  • 2. JavaScript对象详解
    • 2.1 对象的创建方式
      • 2.1.1 对象字面量
      • 2.1.2 Object构造函数
      • 2.1.3 构造函数
      • 2.1.4 类(ES6)
    • 2.2 对象的属性操作
      • 2.2.1 访问属性
      • 2.2.2 添加和修改属性
      • 2.2.3 删除属性
    • 2.3 对象的方法
  • 3. JavaScript数组详解
    • 3.1 数组的创建方式
      • 3.1.1 数组字面量
      • 3.1.2 Array构造函数
      • 3.1.3 Array.of()方法
      • 3.1.4 Array.from()方法
    • 3.2 数组的常用方法
      • 3.2.1 添加和删除元素
      • 3.2.2 数组遍历方法
      • 3.2.3 数组排序和搜索
  • 4. 使用AI助手优化函数、对象和数组操作
    • 4.1 AI代码优化器
    • 4.2 AI代码解释器
    • 4.3 AI代码生成器
  • 5. 实战练习:构建一个简单的待办事项管理应用
    • 5.1 项目概述
    • 5.2 实现步骤
    • 5.3 运行与测试
    • 5.4 项目分析
  • 结论
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档