函数三种定义方式(性质,解析时机,作用域)

<!DOCTYPE html>
<html>
<head>
    <title>class11: 函数三种定义方式</title>
    <script type="text/javascript">
        // 1.function语句式
       /* function test1() {
            alert("方法一");
        }


        // 2.函数的直接量 
        var test2 = function() {
            alert("2");
        }


        // 3.构造函数式
        var test3 = new Function('a','b',"return a+b;");*/


        // (1)效率比较
/*        var d1 = new Date();
        var t1 = d1.getTime();
        for(var i = 0; i<1000000;i++) {
            // function test() {;} //40+ms
             //var test = new Function(); // 400+ms
        }
        var d2= new Date();
        var t2=d2.getTime();
        alert(t2-t1);*/


        // 结论: 静态写入内存的方法效率高,动态销毁的方法时间长,效率低


        // (2) 解析顺序问题
        // 对于function语句式的函数,js解析器会优先解释;其他方法是顺序解析
        /*test1();
        function test1() {
            alert("111");
        }


        test2();
        var test2 =  function() {
            alert("222");
        }*/


        // 例子:
/*        function f() { return 1; }
        alert(f());// 返回值为4, 说明第1个函数被第4个函数覆盖


        var f = new Function("return 2 ;");
        alert(f());// 返回值为2,说明第4个函数被第2个函数覆盖
        var f = function() {return 3;}
        alert(f());// 返回值为3,说明第2个函数被第3个函数覆盖


        function f() {return 4;}


        alert(f());// 返回值为3,接下来都是顺序执行


        var f = new Function("return 5;");
        alert(f());


        var f = function() {return 6;}
        alert(f());*/


        // 解果输出:4,2,3,3,5,6


        // (3) 作用域的问题
        // 方法一,方法二是局部作用域即函数作用域 方法三是全局作用域即顶级作用域
        var k =1;
        function t1() {
            var k = 2;
   /*         function test() {return k;} // 2
            var test = function() {return k;} // 2
            var test = Function("return k;");*/ // 1
            alert(test());
        }




    </script>
</head>
<body>


</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值