JS_高程7.函数表达式(2)递归】的更多相关文章

递归函数:一个函数通过名字调用自身的情况构成的.eg: //递归实现阶乘 function factorial(num){ if(num <= 1){ return 1; }else{ return num * factorial(num - 1); } } console.log(factorial(4)); #  正常情况下,以上函数是没有问题的,但是如果出现以下操作,会出现问题.原因是即使先把factorial保存到anotherFactorial变量后,再将factorial置为null…
定义函数的两种常见的方法: 1 . 函数声明 2. 函数表达式 # 差异 (1)函数声明 ,具有函数声明提升的特征. (2)函数声明的函数的name属性为函数的名称:使用函数表达式定义的函数在ES5中,name属性为空字符串,在ES6中为函数的名称.  #  函数声明提升 函数声明 sayHello();//在函数声明之前调用函数不会报错,因为函数声明提升. function sayHello(){ console.log("Hello!");//Hello! console.log(…
递归函数,在前面的博客中已经简单的介绍了.递归函数是一个通过函数名称在函数内部调用自身的函数.如下: function fac(num){ if(num<1){ return 1; } else{ return num*fac(num-1); } } 上面的代码,在第一行声明了一个fac函数,同时在6行调用了fac函数本身.这是一个求阶乘的递归函数. var anthorfacc=fac; fac=null; anthorfacc(4);//抛出异常 上面的代码,在第一行声明了一个变量antho…
前面的文章中,我在介绍JS中引用类型的时候提过,JS中函数有两种定义方式 第一种是声明函数,即使用function关键字来声明 第二种就是使用函数表达式,将函数以表达式的形式赋值给一个变量,这个变量就保存了对这个函数的引用 function与表达式的区别前文也已经详细分析过,这里就大概讲解一下 虽然两者在写法上没有什么不同,但是function关键字作为函数声明的时候,与var一样会有变量提升的效果 其本质是在JS创建执行环境的时候,就完成了对函数的声明,所以访问该函数的代码在函数声明语句前就可…
阅读目录 一 三元表达式.列表推导式.生成器表达式 二 递归与二分法 三 匿名函数 四 内置函数 五 阶段性练习 一. 三元表达式.列表推导式.生成器表达式 1 三元表达式 name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' print(res) 2 列表推导式 #1.示例 egg_list=[] for i in range(10): egg_list.append('鸡蛋%s' %i) egg_list=['鸡蛋%s' %i…
目录 一 三元表达式 二 列表推到 三 生成器表达式 四 递归 五 匿名函数 六 内置函数 一.三元表达式 def max(x,y): return x if x>y else y print(max(10,12)) name=input('>>>') res='sb' if name=='alex' else 'nb' print(res) ''' name=input('>>>') res='sb' if name=='alex': print(res') e…
http://www.cnblogs.com/linhaifeng/articles/7580830.html 三元表达式.列表推导式.生成器表达式.递归.匿名函数.内置函数…
函数声明 特点:函数声明提升(执行代码之前解析器会先读取函数声明,并使其在执行任何代码之前可用,意味着可以把函数声明放在调用语句之后) function functionName(arg0,arg1) { //do something } 函数表达式 特点:无提升(须等到解析器执行到它所在的代码行才会真正被解析执行) 1.最常见-匿名函数 var functionName = function() { //do something }; 2.命名函数表达式 var functionName =…
7.1递归 经典递归例子 function factorial(num){ if(num <= 1){ return 1; }else{ return num * factorial(num - 1); } } var a = factorial; //① factorial = null; //② alert(a(3)); // ③ factorial is not a function //原因 栈内存中存放一个factorial变量 指向堆内存中的函数体 第①句代码 执行后 变量a 亦指向…
定义函数的方式有2种: 函数声明 函数表达式 函数声明是最常用的,函数声明的一个特征就是:在执行代码之前,就已经读取了函数声明. 这个特征还有一个专门的术语:函数声明提升. 递归函数 所谓递归函数,就是在函数体中使用函数本身. 这就需要用到arguments.callee,他总是指向正在执行的函数,不论函数名怎么改变. function factorial(num){ if (num <= 1){ return 1; } else { return num * arguments.callee(…