JavaScript第七章节 函数表达式
定义函数的两钟方式
函数声明
//函数提升 function name(){ }
函数表达式
// 方式一 var funtionname=function(){ //匿名函数,没有函数名,也叫拉姆达函数 } //
递归
递归函数时在一个函数通过名字调用自己的情况
function factorial(num){ if(num<=1){ return 1 }else{ return num*factorial(num-1) } } // argumente.callee()指向正在执行的函数的指针 function factorial(num){ if(num<=1){ return 1 }else{ return argumente.callee(num-1) } }
闭包
- 闭包是指有权访问另一个函数作用域中的变量的函数
模仿块级作用域
function(){ } // 给函数声明加一个()即变成表达式,然后立即调用 (function (){ // 这是块级作用域 })()
私有变量
function MyObject(){ //私有变量和私有函数 var privateVariable=10; function privateFunction(){ return false } // 特权方法 this.publicMethod=function (){ privateVariable++ return privateFunction() } } // 有权访问私有变量和私有方法的公有方法称为特权方法
静态私有变量
(function(){ //私有变量和私有函数 var privateVariable=10; function privateFunction(){ return false } // 构造函数 MyObject=function(){ } // 公有/特权方法 MyObject.prototype.publicMethond=function(){ privateVariable++ return privateFunction() } })()
模块模式
模块模式是通过为单例添加私有变量和特权方法
var singleton=function(){ name:value, methon:function(){ // 这里是方法的代码 } } // 模块模式 var singleton=function(){ //私有变量和私有函数 var privateVariable=10; function privateFunction(){ return false } return { publicProperty:true, publicMethond:function(){ privateVariable++ return privateFunction() } } }
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。