JavaScript中的函数大法

举报
CShawn 发表于 2020/08/16 22:15:16 2020/08/16
【摘要】 JavaScript中的函数大法JavaScript中的函数具有极高的灵活性,可以实现一些其他语言比较复杂实现的功能。函数嵌套在一个函数中,可以嵌套另一个函数,这个嵌套的函数作用域只在外层函数中,可用于局部的封装:/** * 格式化日期 */function getDate() { var time = new Date(); function getFormatted(num...

JavaScript中的函数大法


JavaScript中的函数具有极高的灵活性,可以实现一些其他语言比较复杂实现的功能。


函数嵌套


在一个函数中,可以嵌套另一个函数,这个嵌套的函数作用域只在外层函数中,可用于局部的封装:

/** 
 * 格式化日期
 */
function getDate() {
    var time = new Date();
    function getFormatted(num) {
        return num < 10 ? '0' + num : num;
    }
    return time.getFullYear() + '-' + 
        getFormatted(time.getMonth() + 1) + '-' +
        getFormatted(time.getDate());
}

这种嵌套使用,在有的场景下是很方便的,比如,在一个方法中,需要执行多次某一动作,当这个操作又与类中其他方法没有任何关系,其作用大小不值得提取为一个独立的方法,那么,在方法内部构造这样一个内嵌的函数就是取巧的一种方式。

函数的不同参数


对于具有相同方法名,不同参数个数的函数,也称为函数的重载,在JavaScript中可以用一个函数实现:


/** 
 * 格式化日期
 */
function getDate(separator) {
    if(!separator) {
        separator = '-';
    }
    var time = new Date();
    function getFormatted(num) {
        return num < 10 ? '0' + num : num;
    }
    return time.getFullYear() + separator + 
        getFormatted(time.getMonth() + 1) + separator +
        getFormatted(time.getDate());
}
alert(getDate()); //yyyy-MM-dd
alert(getDate('/')); //yyyy/MM/dd

经过这样的处理,在一个方法中就实现了对参数默认值的赋值,而在调用方法时,在有某些默认值的情况下,就可以直接调用,而不用传入多余的默认值,这种情况类似于函数的重载,又相当于为参数传入默认值。

闭包


函数可以作为一个函数的参数进行传递,这就使得函数更加的灵活:

function action(a, b, actions) {
    return actions(a, b);
}
function add(a, b) {
    return a + b;
}
function multiply(a, b) {
    return a * b;
}
alert(action(3, 4, add));
alert(action(3, 4, multiply));

这种情况下,调用同一个函数时,通过传入不同的函数作为内部参数,就可以实现不同的操作,在上述例子中,可以实现不同的数学运算,而且,更进一步,这种使用方式可以将函数作为闭包传入,实现函数的灵活调用。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。