Javascript匿名函数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>

    <script>
    //1.
    function myFunction(){
        alert(1);
    }
    
    //调用函数
    //myFunction();
    //同时函数也是对象
    //alert(myFunction.toString());//返回函数原代码
    //alert(myFunction.length);//返回函数形参的个数

    //2.再javascript中声明匿名函数
    var f1 = function(){alert('这是一个匿名函数!')};
    //f1();
    //f1 = 100;

    function f2(fn){
        alert('这是一个f2函数');
        fn();
    }

    //传递一个匿名函数
    //f2(function (){ alert('传递了一个匿名函数!') });

    //直接调用一个匿名函数,在编写函数的同时调用函数
    // (function (x, y){
    //     alert(x+y);
    // })(10, 20);
    
    //定义匿名函数
    var f3 = new Function('x', 'y', 'z', 'alert(x+y+z)');
    //f3(10, 20 , 30 );
    
    //4.
    var x = 1 , y = 0 , z = 0;
    var  add = function (n){ n = n + 1 ; return n};
    y = add(x);

    add = function(n){ n = n + 3; return n };
    z = add(x);

    alert(y + '......' + z);
    </script>

</head>
<body>
    
</body>
</html>

<!-- 
    1.函数即是函数也是一个对象,所以有属性,占内存。
    2.把一个匿名函数赋值给了一个变量,此时直接调用"变量名()"可以直接调用函数, 但是变量并不是直接声明的函数名, 变量还可以赋值其他的对象。
    3.通过New Function(arguments)定义的匿名函数的参数arguments,不会作为全局变量, 参数的作用域只在于函数作用域范围,不同于eval(arguments)函数中
    定义的参数作用域范围为全局。
    4.匿名函数为赋值语句时, 没有预解析功能 , 所以会从上到下依次执行.
-->

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章