第七章 函数表达式

1.定义函数的方式:

①函数声明(其重要特征是函数声明提升,可以把函数声明放在调用它的语句后面):

function functionName ( arg0, arg1, arg2 ){

// 函数体

}

②函数表达式:

var functionName = function ( arg0, arg1, arg2 ){

// 函数体

}

2.匿名函数:function关键字后面没有标识符


3.闭包是指有权访问另一个函数作用域中的变量的函数。创建闭包的常见方式,就是在一个函数内部创建另一个函数。闭包只能取得包含函数中任何变量的最后的一个值。过度使用闭包可能会导致内存占用过多


4.但某个函数被调用时,会创建一个执行环境及相应的作用域链;在另一个函数内部定义的函数会将外部函数的活动对象添加到它的作用域链中。作用域链本质上是一个指向变量对象的指针列表,它只引用但不实际包含变量对象。


5.一般来讲,当函数执行完毕后,局部活动对象就会被销毁,内存中仅保存全局作用域(全局执行环境的变量对象)


6.this对象是在运行时基于函数的执行环境绑定的:在全局函数中,this等于window,而当函数被作为某个对象的方法调用时,this等于那个对象。匿名函数的执行环境具有全局性,因此其this对象指向window


7.如果闭包的作用域链中保存着一个HTML元素,那么就意味着该元素将无法被销毁


8.特权方法:有权访问私有变量和私有函数的公有方法称为特权方法。


9.创建特权方法的方式:

①在构造函数中定义特权方法

function MyObject (){

    // 私有变量和私有函数

    var privateVariable = 10 ;

    function privateFunction (){

        return false ;

    }

    // 特权方法

    this . publicMethod = function (){

        privateVarible++;

        return privateFunction () ;

    };

}

②在私有作用域中定义私有变量或函数

( function (){

    // 私有变量和私有函数

    var privateVariable = 10 ;

    function privateFunction (){

        return false;

    }

    // 构造函数

    MyObject = function(){};

    MyObject . prototype . publicMethod = function (){

        privateVariable ++;

        return privateFunction () ;

    };

}) () ;

③模块模式:为单例创建私有变量和特权方法

var singleton = function (){

var privateVariable = 10;

function privateFunction (){

return false;

}

return {

publicProperty : true ,

publicMethod : function (){

privateVariable ++;

r

}

}

}


10.单例:只有一个实例的对象。JavaScript是以对象字面量的方式来创建单例对象的


11.递归函数应该始终使用arguments.calee 来递归地调用自身,不要使用函数名——函数名可能会发生变化

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 定义函数的方式有两种: 函数声明重要特征就是函数声明提升,意思是在执行代码之前会先读取函数声明。这就意味着可以把函...
    dudu_du阅读 1,638评论 0 0
  • Chapter 7 函数表达式 基本概念 函数声明提升:执行代码前会先读取函数声明。函数声明function sa...
    云之外阅读 1,631评论 0 0
  • 定义函数的方式有两种:函数声明和函数表达式。 函数声明的一个重要特征就是函数声明提升,意思是在执行代码前会先读取函...
    oWSQo阅读 3,892评论 0 0
  • “你们两个绝对不可能在一起的,你就死了这条心吧!” 看着呆在角落里沉默不语的他和他母亲那咄咄逼人的眼神,她的眼泪不...
    许你故作姿态阅读 4,567评论 0 1
  • Laravel Valet For Ubuntu install php and extentions insta...
    拾大花sdf阅读 4,210评论 0 1