函数的基本知识,解析顺序,效率,作用域

三种定义函数的方式:
function语句形式
函数直接量形式
通过Function构造函数形式定义函数

比较三种方式定义的区别:

function语句

Function构造函数

函数直接量

兼容

完全

js1.1以上

js1.2以上版本

形式

句子

表达式

表达式

名称

有名

匿名

匿名

性质

静态

动态

静态

解析时机

优先解析

顺序解析

顺序解析

作用域

具有函数的作用域

顶级函数(顶级作用域)

具有函数作用域


/*----------------------函数效率对比--------------------*/
      var date = new Date();
      var d1 = date.getTime();
        for(var i=0; i<100000; i++){
          function test(){;};     //function语句形式效率更高
          //var test2 = new Function();
        }
      var date2 = new Date();
      var d2 = date2.getTime();
      alert(date2 - date);

      /*--------------------函数解析顺序----------------------*/
      //function语句形式:优先解析,先解析function函数
      test();
      function test(){
        console.log('语句形式,优先解析');
      }

      //函数直接量形式:顺序解析,先解析test2方法在解析函数
      test2();
      var test2 = function(){
        console.log('直接量形式,顺序解析');
      }

      /*----------------------函数解析顺序--------------------*/
      //第一个函数,返回4,说明第一个函数被第四个函数覆盖
      function f(){
        return 1;
      }
      console.log(f());

      //第二个函数,返回2,说明第四个函数被第二个函数覆盖
      var f = new Function("return 2")
      console.log(f());

      //第三个函数,返回3,说明第二个函数被第三个函数覆盖
      var f = function(){
        return 3;
      }
      console.log(f());

      //第四个函数,返回3,说明第四个函数被第三个函数覆盖
      function f(){
        return 4;
      }
      console.log(f());

      //第五个函数,返回5,说明第三个函数被第五个函数覆盖
      var f = new Function("return 5")
      console.log(f());

      //第六个函数,返回6,说明第五个函数被第六个覆盖
      var f = function(){
        return 6;
      }
      console.log(f());

      /*---------------------函数作用域的概念---------------------*/
      var k = 1;
      function t1(){
        var k = 2;
        //返回2
        function test(){
          return k;
        }

        //返回2
        var test = function(){
          return k;
        }

        //返回1
        var test = new Function('return k');

        console.log(test());
      }
      console.log(t1());


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值