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

递归函数:一个函数通过名字调用自身的情况构成的.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 functionName(arg0,arg1) { //do something } 函数表达式 特点:无提升(须等到解析器执行到它所在的代码行才会真正被解析执行) 1.最常见-匿名函数 var functionName = function() { //do something }; 2.命名函数表达式 var functionName =…
定义函数的方式有2种: 函数声明 函数表达式 函数声明是最常用的,函数声明的一个特征就是:在执行代码之前,就已经读取了函数声明. 这个特征还有一个专门的术语:函数声明提升. 递归函数 所谓递归函数,就是在函数体中使用函数本身. 这就需要用到arguments.callee,他总是指向正在执行的函数,不论函数名怎么改变. function factorial(num){ if (num <= 1){ return 1; } else { return num * arguments.callee(…
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 亦指向…
先提个问题, 单独写匿名函数为什么报错?return 匿名函数 为什么不报错? 如图: 第二种情况在 f 还没有执行的时候,就报错了,,,当然这得归因于函数声明语句声明提前(发生在代码执行之前)的原因: 先说下高程下匿名函数的定义: 匿名函数(anonymous function),function 关键字后面没有标识符,(匿名函数有时候也叫拉姆达函数.)匿名函数的name 属性是空字符串. 在把函数当成值来使用的情况下,都可以使用匿名函数. 回答开头的问题: 单独写匿名函数为什么报错? 高程上…
原文地址:benalman.com/news/2010/11/immediately-invoked-function-expression/ 译者:nzbin 也许你还没有注意到,我是一个对术语比较坚持的人.因此,在听到很多次比较流行却容易产生误导的 JavaScript 术语“自执行匿名函数”之后,最终我决定把我的想法写成一篇文章. 为了提供关于这一模式如何运作的透彻信息,我已经提出了我们应该如何称呼它的建议,继续向下看.当然,如果你想跳过开头,你可以只看“自执行函数表达式”这一节,但是我建…
JavaScript中创建函数主要有两种方法:函数声明和函数表达式.这两种方式都有不同的适用场景.这篇笔记主要关注的是函数表达式的几大特点以及它的使用场景,下面一一描述. 主要特点 可选的函数名称 函数名称是函数声明的必需组成部分,这个函数名称相当于一个变量,新定义的函数会复制给这个变量,以后函数的调用都需要通过这个变量进行.而对于函数表达式来说,函数的名称是可选的,例如下面的例子: var sub = function(a1,a2){ return a1-a2; } 这个例子中函数表达式没有名…
函数表达式是一种非常有用的技术,使用函数表达式可以无需对函数命名,从而实现动态编程.匿名函数,是一种强大的方式,一下总结了函数表达式的特点: 1.函数表达式不同于函数声明,函数声明要求有名字,但函数表达式不需要,没有名字的叫匿名函数 2.在无法确定如何引用函数的情况下,递归函数就会变得比较复杂 3.递归函数应该始终使用arguments.callee来递归调用自身,不要使用函数名----函数名可能会发生变化 当函数内部定义了其他函数时,就创建了闭包.闭包有权访问包含函数的作用域和全局作用域,原理…
函数表达式 在编程时,我们可以看到不管是什么类库,jquery也好,zepto也好,都会用到大量的命名函数和匿名函数表达式,本节点就是为了弄懂为何会有这些函数表达式,以及在什么情况下会使用到这些表达式. 在之前,通过对于javaScript高级程序设计的学习,定义函数的方式有两种 函数声明和函数表达式 首先是函数声明: //函数声明 function functionName(arg0,arg1,arg2){} 在这里,有个functionName,FireFox.Safari.Chrome和O…