美文网首页
funObj closure

funObj closure

作者: Mr丨qing | 来源:发表于2017-06-07 10:05 被阅读0次

6.7 函数对象及闭包学习

 * 24.函数对象
 * 25.匿名函数
 * 26.闭包
函数对象

创建函数对象:3种:

  1. 声明方式创建:
    只有以声明方式创建的函数才能被hoist(声明提前)
    function 函数名(参数列表){函数体;return 返回值};
  2. 函数直接量:
    var 函数名=function (参数列表){函数体;return 返回值};
  3. 实例化对象: 参数名和函数体都是字符串
    var 函数名=new Function(
    "参数名1","参数名2",...,"函数体; return 返回值");
function one (a,b){
  return a+b;
}

var two = function (a,b) {
    return a+b;
}

var three = new Function(
    'a','b','return a+b;'
);

arguments对象:接收所有传入函数的参数值的类数组对象
默认所有函数都会自动创建,直接可用。
类数组对象:长得像数组的对象,不是数组类型的实例(对象)
arguments instanceof Array -->false

function ar() {
    if (arguments.length==1){
        console.log('length=1');
    }else if(arguments.length==2){
        console.log('length=2');
    }
    console.log(arguments instanceof Array);    //false
}
ar(1);
ar(1,2);
匿名函数

没有函数名的函数定义
没有任何变量引用
何时:只要一个函数只执行一次时,就用匿名函数。
执行完,立刻释放!
为什么使用:匿名函数没有变量引用,调用完自动释放!
缺点:不可重用!
如何使用:2种:

  1. 匿名函数自调: 定义后立刻调用
    何时使用:只要一个函数只执行一次时
    如何使用:
    (function([参数列表]){
    函数体;
    return 返回值
    }([参数值列表]));
  2. 回调:将函数作为对象传递给其他函数,由其它函数调用
//自调
(function(){
    console.log("111");
})();

//回调
var arr = [1,9,3,7];
arr.sort(function(a,b){
    return a-b;
});
console.log(arr);
闭包

判断闭包:3特点:

  1. 内外层函数嵌套

  2. 内层函数必须使用了外层函数的局部变量

  3. 外层函数将内层函数返回到外部,可在外部调用

    判断闭包结果:2句话:

  4. 外层函数调用了几次,就有几个受保护的局部变量副本

  5. 同一次外层函数调用返回的内部函数对象,操作同一个变量

    闭包: 实现可重用的局部变量,且保护其不受污染的机制

function f1(){
    var i = 1;
    function  f2(){
        i++;
        console.log(i);
    }
    return f2;
}
var rs = f1();
rs();//局部变量,重用
rs();
rs();

相关文章

  • funObj closure

    6.7 函数对象及闭包学习 函数对象 创建函数对象:3种: 声明方式创建:只有以声明方式创建的函数才能被hoist...

  • scala函数和闭包

    Function and closure

  • Closure。

    梦到他实属平常,但是梦到他流泪却是第一次。他在我对面的椅子上坐下来,明亮有神的双目流出两行泪来,一些无奈一些悲伤,...

  • Closure

    JS当中的一段实现“加法器”的代码。 显然,fiveAdder是用来每次加5的加法器,而tenAdder是用来每次...

  • Closure

    概念 直接来看两个函数的对比 执行 count1()调用第一个函数,很简单。我们会得到 arr1 = [1, 4,...

  • Closure

    写作苦旅,乐在其中 ——写于拜读《On Writing Well》全书后 参加读书会的第一个月,今天终于在大家的陪...

  • Closure

    闭包回调在于从A跳转到B时,将对A赋值的函数对象传给B,在需要赋值的时候,B调用该函数对象即可。 E.G. //...

  • Closure

    我们可用swift的闭包来定义变量的值。 先来一个简单的例子大家先感受感受。 定义一个字符串的变量的方法: 直接赋...

  • Closure

    基本函数 函数签名是不包含参数名 函数式作为一等公民,可以当做变量,返回值,参数,这提升了到函数编程的思想 Clo...

  • closure

    閉包語法表達: 從上下文推斷當將閉包作為內聯閉包表達式傳遞給函數或方法時,總是可以推斷出參數類型和返回類型。因此,...

网友评论

      本文标题:funObj closure

      本文链接:https://www.haomeiwen.com/subject/ulsofxtx.html