Javascript 基础—函数

函数

1.函数定义产生的初始值  可以用函数对象的参数 arguments.length确定有多少个参数。

2.内嵌的函数一般只能在函数内部调用,不可以在函数外部调用。(类似有作用域)。但是对于条件函数及 在If的某个分支中定义的函数时没有作用域的,可以在这个分支外面调用。

3. 函数和函数表达式的区别

函数语句:  function  A(){}

函数表达式: var A=function(){}

                var B=function A(){}

区别:(1)在调用之前,建立作用域时,函数语句会被声明 并将A指向函数的引用,但是函数表达式只会申明变量A 并赋值为undefined,对匿名函数是执行时在申明。

(2)函数语句 的定义语句和变量申明语句相似有提顶功能,当先调用,再执行时同样也是可行的。

(3)对于内存管理和垃圾回收方面的区别

 

     函数表达式,是把表达式赋值给一个对象,该变量是函数表达式的唯一引用,因此通过将该变量赋值为null时,就无法访问这个表达式,符合垃圾回收机制,会将函数表达式删除。

     函数语句定义的函数,它是以对象的形式独立存在的,无法删除。(delete是用来删除对象的对象,无法删除对象,可以通过删除对象的引用,让对象达到可以被回收的要求)

    将函数赋值给一个变量时,这时B其实有A的一个副本,将变量B不可用或者=NULL,函数A仍然可以用 ,A 和B不是指向同一个函数。B是指向A的副本,B如何变动对A没有影响。

4.匿名函数

形如  function(){} 是没有名字的函数。匿名自执行函数是在定义时将参数传入到函数中。

好处:可以形成一个命名空间,防止空间污染。

5. 全局变量和局部变量

 当同时存在全局变量和局部变量时,在函数内部 局部变量会覆盖全局变量。当多次定义局部变量时,其实是一个覆盖的过程,如果重新定义个已经定义的变量,其实在查找的时候的是同一个,关键看有没有赋值将原来的值覆盖掉了。

6. 闭包

闭包:闭包是一个函数,是在一个特定环境(及他的外函数)中运行的函数。对于环境中的一些变量,当调用这个函数时,这些变量任然可以用。

闭包函数:当一个函数作为参数传入或者作为返回值返回时,都是闭包函数。

闭包常见的错误:待续

     

posted @ 2014-11-12 11:28  xuru  阅读(117)  评论(0编辑  收藏  举报