js 函数知识点

本文深入探讨JavaScript中的函数特性,包括函数表达式的不同形式及其name属性的特性,通过实例讲解回调函数的应用,最后介绍了一种避免全局作用域污染的方法——对象即时初始化模式。

 

函数的第二个重要特性是它能提供作用域支持

// 具名函数表达式
var add = function add(a, b) {
    return a + b;
};

// 匿名函数表达式,又称匿名函数
var add = function (a, b) {
    return a + b;
};

当省略第二个add,它就成了没有名字的函数表达式,这不会对函数定义和调用语法造成任何影响。带名字和不带名字唯一的区别是函数对象的name属性是否为空字符串。

函数的name属性
function foo() {} // 函数声明
var bar = function () {}; // 匿名函数表达式
var baz = function baz() {}; // 具名函数表达式
foo.name; // "foo"
bar.name; // ""
baz.name; // "baz"

//回调模式

函数是对象,也就意味着函数可以当作参数传入另外一个函数中。给函数writeCode()传入一个函数参数introduceBugs(),在某个时刻writeCode()执行了(或调用了)introduceBugs(),在这种情况下,我们称introduceBugs()是一个“回调函数”,简称“回调”:

function writeCode(callback) {
    // 做点什么……
    callback();
    // ……
}

function introduceBugs() {
    // ……
}

writeCode(introduceBugs);

//对象即时初始化

还有另外一种可以避免污染全局作用域的方法,和前面描述的即时函数相似,叫做“对象即时初始化”模式。这种模式使用一个带有init()方法的对象来实现,这个方法在对象被创建后立即执行。初始化的工作由init()函数来完成。
({
    // 这里可以定义一些设置项,比如常量
    maxwidth: 600,
    maxheight: 400,

    // 你也可以定义一些方法
    gimmeMax: function () {
        return this.maxwidth + "x" + this.maxheight;
    },

    // 初始化
    init: function () {
        console.log(this.gimmeMax());
        // 更多的初始化任务……
    }
}).init();

//

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值