函数表达式---递归
来源:互联网 发布:苹果手机网络加速软件 编辑:程序博客网 时间:2024/05/22 02:07
一.定义函数的方式:
1.函数声明
function add(){ return "o"; } 特性:函数声明提升 o();//"ppp" function o(){ alert("ppp"); } 在执行时会先读取函数声明。
2.函数表达式
var add = function(){ return "o"; } 这其实是匿名函数,因为function后面是没有函数的名字的,只是将函数赋值给变量add。 特性:先定义后调用 o();//错误:函数不存在 var add = function(){ return "o"; }
注意:不要这样做: if(a){ function add(){ return "o"; } }else{ function add(){ return "wpoasd"; } }
表面上看是a==true时调用第一个add,否则调用第二个add。 其实是无效的,函数声明式的会函数声明提前,造成错误,js引擎会试图修复,但是不同的浏览器修复的结果不同。 可以这样做:
var add; if(a){ add = function(){ return "o"; } }else{ add = function(){ return "wpoasd"; } }
二.递归:
是函数自身的情况下造成的
function a(num){ if(nem<=1){ return 1; }else{ return num*a(num-1); } }
看起来没有啥问题,但是函数和a函数有着极强的耦合度
如: var b = a; a = null; alert(b(4))//出错
可以用arguments.callee,它指向当前运行的函数
function a(num){ if(nem<=1){ return 1; }else{ return num*arguments.callee(num-1); } } var b = a; a = null; alert(b(4))//24
阅读全文
0 0
- 函数表达式---递归
- Lambda表达式编写递归函数
- 一个递归计算数学表达式的函数
- 一般递归函数、λ表达式、图灵机
- js 函数表达式-递归 小例子
- 第14周报告1 用递归函数求解表达式
- 使用 C# lamda 表达式写的两种递归函数
- Lambda FAQ_8.Lambda表达式能用来定义递归函数吗?
- 第七章:函数表达式(简述、递归和闭包)
- [递归]递归函数
- 递归函数
- 递归函数
- 递归函数
- 递归函数
- 递归函数
- 递归函数
- 函数递归
- 递归函数
- 朋友
- Torch7.0安装
- Ajax异步回调函数(callback)
- hdu 6085 Rikka with Candies(bitset容器)
- poj1847Tram的dijkstra解法
- 函数表达式---递归
- activiti xml String方式部署
- 解决从jenkins打开robot framework报告会提示‘Opening Robot Framework log failed ’的问题
- HMM终极版
- Linux下查看和添加环境变量
- ubuntu下tensorflow的环境搭建
- Android显示系统框架原理介绍
- Web安全技术方案
- TUM的mono_dataset_code笔记及编译aruco