JavaScript学习笔记(八)--- 函数表达式
2014-09-08 12:48
561 查看
1.递归
实现一:
但给factorial重赋值时,再调用就会出错。
实现二:
使用arguments.callee解决上面问题。
修改factorial,再调用
实现三:
在严格模式下,不能通过脚本访问arguments.callee。解决办法,使用命名函数表达式。
以上代码创建了一个名为f()的命名函数表达式,然后将它赋值给变量factorial。
把函数赋值给另一个变量,函数的名字f仍然有效。这种方式在严格模式和非严格模式下都行得通。
2.闭包
实现一:
function factorial(num){ if(num<=1){ return 1; }else{ return num*factorial(num-1); } } alert(factorial(4)); //24
但给factorial重赋值时,再调用就会出错。
var anotherFactorial = factorial; factorial = null; alert(anotherFactorial(4)); //TypeError: factorial is not a function
实现二:
使用arguments.callee解决上面问题。
function factorial(num){ if(num<=1){ return 1; }else{ return num*arguments.callee(num-1); } } alert(factorial(4)); //24
修改factorial,再调用
var anotherFactorial = factorial; factorial = null; alert(anotherFactorial(4)); //24
实现三:
在严格模式下,不能通过脚本访问arguments.callee。解决办法,使用命名函数表达式。
var factorial = (function f(num){ if(num<=1){ return 1; }else{ return num*f(num-1); } }); alert(factorial(4)); //24
以上代码创建了一个名为f()的命名函数表达式,然后将它赋值给变量factorial。
把函数赋值给另一个变量,函数的名字f仍然有效。这种方式在严格模式和非严格模式下都行得通。
var anotherFactorial = factorial; factorial = null; alert(anotherFactorial(4)); //24
2.闭包
相关文章推荐
- JavaScript高程学习笔记之函数表达式(7)
- JavaScript高级程序设计学习笔记--函数表达式
- JavaScript学习笔记之函数表达式与闭包
- Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
- JavaScript高程学习笔记之函数表达式(7)
- Javascript学习笔记3 函数表达式 闭包
- <深入理解JavaScript>学习笔记(4)_立即调用的函数表达式
- Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
- JavaScript学习笔记(十) 函数声明VS函数表达式
- javascript 函数声明和函数表达式的区别(学习笔记)
- javascript dom 学习笔记 第九章:实现给某个元素添加加新的class的值的函数!
- JavaScript学习笔记 6-循环、数组和函数 Loops , Arrays and Function
- JavaScript正则表达式(学习笔记)
- accp6.0 《使用javascript增强交互效果》学习笔记ch7 正则表达式和表单辅助特效
- javascript学习笔记(五)正则表达式
- 《JavaScript 语言精粹》 学习笔记 —— 第四章 函数
- javascript学习笔记(七) js函数介绍
- Javascript RegExp正则表达式学习笔记
- Javascript学习笔记2 函数
- freemarker学习笔记_表达式、变量和内建函数