js function理解

1.function是对象,定义一个function就会在堆中创建一个对象。生成函数如下:

(1)

var a = new Function("document.write(1)");

(2)

var a = function(){document.write(1);}

(3)

function a(){

  document.write(1);

}

(4)

(function(){

  document.write(1);

}();

2.function对象是一种特殊的对象,调用function方法,会执行里面的代码。

a();

输出1

3.function内的基本数据类型会在函数退出执行环境栈时内存释放。function访问作用域链与定义时的位置有关。

function A(){

  var a = 1;

  return function(){

    var b = 1;

    cosnole.log(a);

  }

}

var A()();

输出1

函数A执行完后,由于函数A中嵌套匿名函数,所以不立即释放函数A的变量。匿名函数是在函数A中定义的,匿名函数可以访问A的作用域以及A作用域链上的作用域。当返回的函数之行时,打印出A出的变量的值1。当匿名函数执行完以后,退出函数执行环境栈,函数A内的变量释放,退出函数执行栈。

4.function也可通过传递参数的方式,给函数传值。

function A(){

  var a = 1;

  return function(b){

    var bb = b;

    cosnole.log(bb);

  }

}

A()('b');

输出b

5.function是一种引用数据类型,可当作其它类型的数据一样处理。function可用作传参、返回值。

function A(func){

  var a = 1;

  func(a);

}

function B(){

  var b = 2;

  A(function(a){console.log(a);console.log(b)};)

}

B();

输出1 2

 

posted @ 2017-02-20 22:19  springmin  阅读(268)  评论(0编辑  收藏  举报