JavaScript基础教程(十八)语法之函数:函数式魔法,JavaScript函数的终极进化指南

一、函数定义:两种基础形态

JavaScript函数可通过声明语句和表达式两种方式定义:

// 函数声明(提升生效)
function sum(a, b) {
    return a + b;
}

// 函数表达式(执行阶段生效)
const multiply = function(a, b) {
    return a * b;
};

二、箭头函数:颠覆this绑定规则

ES6箭头函数不仅简化语法,更彻底改变this指向规则:

// 传统函数this指向调用对象
const counter = {
    count: 0,
    increment: function() {
        setInterval(function() {
            this.count++; // this指向全局对象!
        }, 1000);
    }
};

// 箭头函数继承外层this
const counterFixed = {
    count: 0,
    increment: function() {
        setInterval(() => {
            this.count++; // this正确指向counter对象
        }, 1000);
    }
};

三、闭包:函数的记忆魔法

闭包让函数能够"记住"词法作用域,实现状态保存:

function createCounter() {
    let privateCount = 0; // 私有变量
    
    return {
        increment: () => ++privateCount,
        getValue: () => privateCount
    };
}

const counter = createCounter();
counter.increment(); // 1
counter.getValue();  // 1

四、高阶函数:函数作为参数和返回值

函数作为一等公民,可作为参数传递和返回值使用:

// 函数作为参数(回调模式)
const users = ['Alice', 'Bob', 'Charlie'];
users.map(user => user.toUpperCase());

// 函数作为返回值(函数工厂)
function createValidator(rules) {
    return function(value) {
        return rules.every(rule => rule(value));
    };
}

const isEmail = createValidator([
    val => val.includes('@'),
    val => val.length > 5
]);

五、立即执行函数(IIFE):模块化先驱

ES6之前,IIFE是创建私有作用域的主要手段:

// 创建独立作用域
const module = (function() {
    let privateVar = 10;
    
    return {
        getValue: () => privateVar,
        setValue: (val) => { privateVar = val; }
    };
})();

module.getValue(); // 10
module.setValue(20);

JavaScript函数从简单的代码块进化为强大的编程构造块,理解其核心概念是掌握现代JavaScript开发的关键。随着ES6+新特性的加入,函数在异步编程、模块化、函数式编程等领域继续发挥着不可替代的作用。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值