美文网首页
Javascript回调函数和闭包函数 Day3

Javascript回调函数和闭包函数 Day3

作者: _Enco_ | 来源:发表于2017-07-03 16:20 被阅读0次

    多参和

    function fn(a,b,c,d){
      console.log(a+b+c+d);
    }
    console.log(1,1); // NaN
    console.log(1,1,1,1); // 4
    console.log(1,1,1,1,1,1); // 4
    

    参数设置默认值

    function fn(name,age){
      name = name || "karen";
    }
    function fn2(name = "karen", age = 18)
    function fn3(name,age){
      if(name = undefined){
        name = "karen";
      }
    }
    

    回调函数

    • 将函数作为参数调用
    function tool(a,cb){
      a++;
      return cb(a);
    }
    var a = function tool(10,function fm(num){
      return num;
    })
    console.log(a);
    

    变量作用域

    var a=10;
    function fn(){
      console.log(a);
      var a= 20;
    }
    fn(); // undefined
    
    var a = 10;
    var a = 20;
    console.log(a); //20
    
    • 不要有重复的变量名(不和前面的代码有一样的标识符)
    //var a,a;
    console.log(a); // undefined
    var a = 10;
    console.log(a); // 10
    var a = 20;
    console.log(a); // 20 
    
    • 不能和关键字一样(系统提供的有特殊功能的单词)
    • for循环内部不要声明函数(javascript bug)
    var b = 30;
    function fn(){
    // var b ;
      console.log(b); // undefined
      for(var i=10;i<13;i++){
          var b = 10;
       }
    console.log(b); // 10
    }
    fn();
    

    函数的闭包(函数返回内部的函数)

    • 函数内部的函数被return
    function fm(){
      var a = 30;
      function fn(){
        return a;
      }
      return fn; // 返回fn函数的闭包
    }
    console.log(fm()());
    
    • 有参数的闭包函数

    for循环

    • 当for循环结束时会执行一次第三条语句
    var array=[];
    var a = 0;
    function fn(){
       for(var i = 0; i<30;i++){
       if(i<3){
         function fm(){ alert(i) }
         array.push(fm)
         } 
      }
    }
    fn();
    array[0](); //弹窗30 
    array[1](); //弹窗30
    array[2](); //弹窗30
    

    思考

    function fn(){
    // var a;
    // var b;
            console.log(a); //undefined
            console.log(b); //undefined
            console.log(c); // c没有定义,报错
            var a=20; //有var后不会在外部空间隐式声明
            var b=c; // c没有开辟空间
          }
          fn();
          console.log(a);
          console.log(b);
          console.log(c);
    
    // var a;
    // var b;
    // var c;
    function fn(){
            a=b=c=20;
            console.log(a); //20
            console.log(b); //20
            console.log(c); //20
          }
          fn();
          console.log(a); //20
          console.log(b); //20
          console.log(c); //20
    

    相关文章

      网友评论

          本文标题:Javascript回调函数和闭包函数 Day3

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