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.匿名函數爲賦值語句時, 沒有預解析功能 , 所以會從上到下依次執行.
-->

 

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