JS基础总结-函数(五)

  • 定义函数

  • 函数声明

 

  1. 示例
    function functionName(){
        //函数体
    };
    console.log(functionName.name);//functionName

     

  2. 注意:
    1. 在chrome,Firefox,Safari,Opera中为函数定义了一个name属性,该属性可以访问到该函数指定的名字;
    2. 函数声明有一个重要特征:函数声明提升(在执行代码前会先读取函数声明,在函数调用时再执行函数体)
      helloWorld();
      function helloWorld(){
          console.log('hello');
      }

       

  3.  
  • 函数表达式

  1. 示例
    var funcName = function(){
        //函数体
    };

     

  2. 注意
    1. 函数表达式的形式类似于变量赋值,将一个函数赋值给变量funcName,这种方式创建的函数叫做匿名函数
    2. 函数表达式没有函数提升。
    3. 当有不同条件赋值不同函数时,可使用函数表达式,先声明变量,再在条件语句将内不同函数赋值给变量。
      //正确使用方式
      var test;
      if(condition){
          test = function(){
              console.log('test1');
          }
      }else{
          test = function(){
              console.log('test2');
          }
      }
      
      //下面的方式错误,无效语法
      if(condition){
          function test (){
              console.log('test1');
          }
      }else{
          function test (){
              console.log('test2');
          }
      }

       

  • 匿名函数和闭包

  • 匿名函数

  1. 理解匿名函数
    1. 创建一个函数并将它赋值给变量,这种情况下创建的这个函数就是匿名函数。
    2. 在匿名函数中定义的任何变量,都会在执行结束时被销毁。
  2. 用作块级作用域的匿名函数
    1. 示例
      (function(){
          //块级作用域
      })();
      
      //以上的代码定义并立即调用了一个匿名函数

       

    2. 理解上面代码的演变过程:
      1. 变量是值的另一种表现形式
        var test = function(){//定义函数
            //块级作用域
        };
        
        test();//调用函数

        调用函数的方式是在函数名称的后面添加圆括号。

      2. 我们可以用实际的值替换变量。
        (function(){
            //块级作用域
        })();

        函数声明后面不能直接添加圆括号进行调用函数。我们通过用圆括号包含住函数声明的形式,将函数声明转换为函数表达式,然后在函数表达式后面添加圆括号进行函数调用。可以理解为该方法其实是第一点中的另一种形式。

  3.  
  4. 注意
    1. 匿名函数的执行环境具有全局性,它的this对象通常指向window。
      var name = 'the window';
      var obj = {
      
          name: 'object',
          getName: function(){
              return function(){
                  return this.name;
              };
          }
      };
      console.log(obj.getName()());//the window
    2.  
  5.  
  • 闭包

  1. 理解闭包
    1. 闭包是指有权访问另一个函数作用域中的变量的函数。
  2. 注意
    1. 闭包只能取得包含函数中任何变量的最后一个值。
      function test(){
          var result = new Array();
          for(var i = 0; i < 10; i++){
              result[i] = function(){
                  return i;//全部返回10
              };
      
          }
          return result;
      };
        
      //返回0-9的正确使用方式
      function test(){
          var result = new Array();
          for(var i = 0; i < 10; i++){
              result[i] = (function(num){
                  return function(){
                      return num;
                  };
                  
              })(i);
      
          }
          return result;
      };

       

    2.  
  3.  
  •  
  •  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值