文档章节

内部函数解耦合

林祺泰
 林祺泰
发布于 2016/06/08 10:47
字数 235
阅读 12
收藏 0

这里拿递归函数做例子: 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>test</title>
</head>
<body>
    test
</body>
<script>
    function factorial(num){
        if(num <= 1){
            return 1;
        }else{
            return num * factorial(num - 1);
        }
    }
    console.log(factorial(5));
    //定义阶乘函数一般都要用到地柜算法;如上面的代码所示,在函数有名字,而且名字以后也不会
    //变的情况下,这样定义么有问题。但问题是这个函数的执行与函数名factorial紧紧耦合在一起了。
    //为了消除这张哦那个紧密耦合的现象,可以像下面这样使用arguments.callee.
    function factorial(num){
        if(num <= 1){
            return 1;
        }else{
            return num * arguments.callee(num - 1);
        }
    }
    console.log(factorial(5));
    //在函数内部,有两个特殊的对象:arguments和this。arguments的用途是保存函数参数,但这个
    //对象还有一个名叫callee的属性,改属性是一个指针,指向拥有这个arguments对象的函数。
</script>
</html>

 

© 著作权归作者所有

林祺泰
粉丝 0
博文 17
码字总数 2143
作品 0
温州
私信 提问
新书抢读 | 优化耦合一枪命中:助你代码排坑的趣味思路

dbaplus社群 · 新书抢读-01期- 编者有言:如何选对技能进阶好书,一直是个有点纠结的难题。为了帮助大家抢读新鲜内容,把握重要技术能力,dbaplus社群全新开启新书抢读栏目,助力大家的技术...

余叶
04/12
0
0
业内首个支持渐进式组件化的开源框架

前言 项目大了,编译慢了,开发效率低了,怎么办? 也许你已经知道了组件化,但项目迭代任务紧张,根本没有时间进行整体解耦,更害怕一下子改动太大导致的风险不可控,不敢大改,怎么办? 先...

luckybilly
2018/06/21
0
0
可靠React组件设计的7个准则之封装

翻译:刘小夕 原文链接:dmitripavlutin.com/7-architect… 原文的篇幅非常长,不过内容太过于吸引我,还是忍不住要翻译出来。此篇文章对编写可重用和可维护的React组件非常有帮助。但因为篇...

刘小夕
08/09
0
0
简析JavaScript中的Function类型(四)——函数的内部属性

函数的内部属性主要有三个:。其中在简析JavaScript中的this关键字中探讨的已经比较清楚了,这里来说下和。 1. arguments 看下面的代码: 如代码所示,声明时没有显式地声明参数,但是在函数...

前端二牛
03/30
5
0
IOS中KVO模式的解析与应用

IOS中KVO模式的解析与应用 最近老翁在项目中多处用到了KVO,深感这种模式的好处。现总结如下: 一、概述 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象...

法斗斗
2016/03/22
23
1

没有更多内容

加载失败,请刷新页面

加载更多

好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
今天
6
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
今天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
今天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
今天
17
0
浅谈java过滤器Filter

一、简介 Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码、做一些业务逻辑判断如是否有权限访问页面等。其工作原理是,只要你在web.xml...

青衣霓裳
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部