第七章 函数表达式
-
创建函数的方式:函数声明(只有函数声明可以放在调用函数的语句之后),函数表达式;
-
递归:aruguments.callee可以不通过索引指向自身函数,严格模式下该属性无法访问
-
闭包:指有权访问另一个函数作用域中的变量的函数。外部函数包含内部函数,内部函数的作用域链包含外部函数的作用域链,即使在外部调用内部函数,依然可以通过内部函数的作用域链访问得到外部函数的作用域;①闭包与变量:闭包只能取得包含函数中任何变量的最后一个值,如果想在闭包中让函数获取当时的值,只能通过function name(参数){}(当时的值);这样来获取;②关于this对象:在一个函数被调用时,this会指向被调用的那个对象,在闭包机制中,内部函数只会搜索到活动对象,不会访问外部函数的this和arugements这两个变量,因此如果要访问this,需要定义一个变量对this的索引,然后再使用其中的变量;③内存泄漏:闭包下的作用域链机制会导致某些函数和变量无法及时销毁;
-
模仿块级作用域:(function(){//这里是块级作用域})();属于函数表达式,在函数执行后会立即销毁作用域中的变量,这个方法可以减少闭包占用的内存问题;
-
私有变量:指函数的参数,局部变量和函数内部定义的其他函数。在一个函数内部定义局部变量和局部函数,接着在定义函数表达式并赋值给this,在这个函数表达式内部可以访问得到局部变量和局部函数,这样称为特权方法。一般要创建私有变量都在私有作用域中创建变量和函数,然后再创建全局对象(不使用var),并再对象的原型对象中创建函数表达式赋值给它,在表达式中操作私有变量和返回私有函数;模块模式:;