JSベース05


関数
筆記目録
  • 関数
  • 小概
  • .関数の紹介
  • .関数パラメータ
  • 传参案内
  • 関数参照連絡
  • .関数の戻り値
  • 3.1関数の他のステートメント方式
  • .変数スコープ
  • .拡張
  • 5.1論理演算子短絡演算
  • .argmentsキーワード
  • .コール機能&コールバック関数
  • 6.1自動起動関数(即時実行関数)
  • 6.2コールバック関数
  • 総括
  • 概要
    学習内容:関数の紹介、関数のパラメータ、関数の戻り値、変数のスコープ、論理演算子の短絡演算、argmentsキーワードの理解、自己起動関数(直ちに関数を実行)、コールバック関数.
    1.関数の紹介
  • 関数作用:コードを記憶し、コード多重化を解決する
  • 関数構文:1宣言関数:コード預入関数(ステートメント関数は格納プロセスだけで、関数体を実行しません)function関数名(){関数体コード}2コール関数:実行関数のコード関数名();
    //1.     :               ,          
    function fn(){
         
        console.log("1.      ,       ");
        console.log("2.           ");
        console.log("3.   ,       1   ");
        console.log("4.      ,       ……          ");
        console.log("5.   ,    2888 ,        ");
        console.log("6.     ");
    };
    console.log('     300   ');
    //  (   )
    console.log('a       ');
    //2.    
    fn();
            
    // console.log("1.      ,       ");
    // console.log("2.           ");
    // console.log("3.   ,       1   ");
    // console.log("4.      ,       ……          ");
    // console.log("5.   ,    1888 ,        ");
    // console.log("6.     ");
    console.log('     500   ');
    //  (   )
    console.log('b       ');
    //2.    
    fn();
    
  • 関数と循環の違い1.本質的に異なる関数は、データの種類である.メモリにコードを格納するサイクルは、ある機能を実行するための文である.機能の異なる関数は、一部のコードが複数の場所で1回のループを実行することである.一部のコードが1箇所で複数の
  • を実行することである.
    2.関数パラメータ
    紹介します
    関数パラメータ1の役割:「スケジューラ」は、データを「関数」2に渡すための構文伝達データ:スケジューラ*関数名(実参);受信データ:関数*function関数名(イメージ){関数体コード}3関数のパラメータの本質:実際の参照値4注意点:実際の参照とイメージの順序が一致しないことができます(1)実際の参照とイメージの値は、それぞれの割り当てに応じて(2)各調整者の参照は、独立した相互干渉であり、もし伝えられていない場合、デフォルトの実装はundefinedです.
    関数の参照
    コードは以下の通りです.
    //1.     :          
    function getArea(r){
         
        let area = Math.PI * Math.pow(r, 2);
        console.log(area);
    };
    //  
    getArea(5);
    getArea(10);
    //2.     : 1-            
    function getSum(num){
         
        let sum = 0;
        for(let i = 1;i <= num;i++){
         
            sum += i;
        };
        console.log(sum); 
    };
    //  
    getSum(10);
    getSum(100);
    //3.     ,        
    function getMax(arr){
         
        let max = -Infinity;
        for(let i = 0;i<arr.length;i++){
         
            if(arr[i]>max){
         
                max=arr[i];
            };
        };
        console.log(max);
    };
    getMax([20,60,88,50]);
    getMax([20,60,98,70]);
    
    3.関数の戻り値(return)
    関数の戻り値1の役割:「関数」がデータを転送して‘调节者’2文法に渡す:データを伝える:関数*function関数名(形参){関数体コード;return戻り値}受信データ:调节者*let変数名=関数名()3注意点:(1)関数がreturnされていない場合、デフォルトの戻り値はundefined(2)関数があります.しかし、returnの後には値がありません.この場合、デフォルトの戻り値もundefined(3)returnで関数全体を終了することができます.(サイクル中のbreakのように、breakだけがサイクルを終了するために使用され、returnは関数を終了するために使用されます.)
    //1.    
    function getSum(num){
         
        let sum = 0;
        for(let i = 1;i <= num;i++){
         
            sum += i;
        };
        return 1;   
        return 2;//   ,  return      
    };
    //2.     
    /*                        
    (1)                
    (2)          ,            
    */
    //   A
    let res1 = getSum(10);//         ,          
    console.log( res1 );
            
    // document.write(`${sum}`);//  
    //   B
    console.log( getSum(100) );//       
    
    3.1関数のもう一つの宣言方式
    jsの関数には、2つの宣言方式/ファンクションステートメントがあります.function関数名(){}/匿名関数式声明:let関数名=function(){}
    //1.     :  function    (){        }
    //    :        function    (){}
    function fn(){
         
        console.log(1111);
    };
    fn();
    let a = fn;//         (      ),       
    a();
    //2.     
    //    :          function(){}
    let fn1 = function(){
         
        console.log(22222);
    };
    
    4.変数スコープ
    1.変数のスコープ:変数が作用する範囲の大域作用域(大域変数):関数外宣言変数、ページのどこでも局所作用域(局所変数)が使用できます.関数内宣言変数は、関数内でのみ2.作用領域チェーンを使用できます.デフォルトでは、コードは大域作用域(0段鎖)です.関数を宣言した後、この関数の内部に局所的な作用領域(1級)が形成され、関数の内部に関数が宣言されます.このとき、新しい局所的な作用領域(2段鎖)が形成され、このようなファスナー構造は作用領域チェーンと呼ばれます.変数の訪問作用ドメインチェーンの規則:近くの原則は、ある作用ドメインで変数を訪問する時、先にこのスコープが宣言されているかどうかを見ます.もしあれば訪問します.もしないならば、上級の作用域に訪問して、もし上級はないならば、引き続き上へ探して、ずっと作用域のトップの0級を探し当ててまだ探し当てていないで、この時間違いを報告します.
    //      :     
    let num = 10;
    function fn(){
         //              ,         
        //  
        num = 20;
        console.log('   ' + num);
        //  
        let num1 = 50;
        console.log( num1 );
        
    };
    fn();
    console.log( '   ' + num );
    // console.log( num1 );
    
            //     (0  )
            let num  = 10;
            function fn(){
         //      0 
                //1 
                let num = 20;
                console.log('1 ' +  num );//20
                
                function fn1(){
         //1 
                    //2  
                    // let num = 30;
                    console.log( '2 ' + num );//30
                };
                fn1();
            };
            fn();
            //0  
            console.log( '0 ' + num );//10
    
    下位作用域(2級)は、上位作用域(0級、1級)の変数に対して赋値などの操作が可能ですが、上位作用域(0級、1級)は、下位作用域(2級)の変数を操作できません.
    5.拡張
    5.1論理演算子短絡演算
    1.論理演算子&論理和:うそはうそ論理か:一真は本当か!論理非:反true変falseを取って、falseはtrue 2になります.論理演算子短絡演算:左の式が論理式の結果を決定できるなら、右の式は実行しません.(コード解析効率を高めるために)3.論理演算子短絡規則論理と:偽を探して、左の式をfalseに変えることができます.無条件に左の式の値を返します.いずれにしても無条件に右式の値を返します.論理または:本物を探して、左の式はtrueに変えられます.無条件に左の式の値を返します.いずれにしても無条件に右式の値を返します.
  • 短絡演算アプリケーションシーン:関数デフォルトパラメータ
  • // let num = 10;
    // let res = num > 20 && num++;
    // console.log( res );//false
    // console.log( num );//10
    /*                 ,        
    // let res = 10 && 20;
    // console.log( res );//20
    //1.      :     
    //     :  :           false,   
    let res = 1 && undefined;
    console.log( res );
    //2.      :     
    //     :    :           true,   
    let res1 = 1 || undefined;
    console.log( res1 );
    //3.    :       
    //  :          
    //   
    let res2 = 10 && undefined && null && 0;
    console.log( res2 );//undefined
    let res3 = '' || 1 || 10 || undefined || null || 0;
    console.log( res3 );//10
            
            
    /*       :       */
    function add(a,b){
         
        /* a    10,b    20 */
        a =  a || 10;
        b = b || 20;
        console.log(a,b);
        console.log(a + b );   
    };
    add();//undefined,undefined
    add(15);//15,undefined
    add(25,35);//25,35
    
    5.2 argmentsキーワード
    1.argments役割:関数を取得するすべての実参2.argmentsは疑似配列である(配列3要素のみ:要素、下付き、長さ.配列の他の方法は使用できない)3.場面:関数はパラメータの数によって異なる機能を実現することができます.
            function fn(a,b){
         
                console.log(a,b);
                console.log( arguments );
    
                if(arguments.length == 1){
         
                    console.log('  1');
                }else if( arguments.length == 2){
         
                    console.log('  2');
                }else{
         
                    console.log('  3');
                };            
            };
            //js                 
    
            fn(10);//a = 10,b = undefined
            fn(10,20);//a = 10,b=20
            fn(10,20,30);//a = 10,b=20
    
    6.コール機能&コールバック関数
    6.1コール関数(すぐ実行関数)
    1.コール関数:関数は自分自身でコールします.匿名関数は自分で呼び出します.
            (function(){
         
                //     
                let num = 10;
                console.log(num);    
            })();//          
            
     /*                  ,             
                       
                     :    ()
                    :    (function(){})()
            */
            (function fn(){
         
                console.log(6666);
            })();
    
    6.2コールバック関数
    コールバック関数:関数のパラメータが関数である場合、このパラメータ関数をコールバック関数と呼びます.
            function fn(a){
         
                console.log(a);
                a();//      
            };
    
            fn(function(){
         
                console.log(666);
            });
    
            // function fn(){
         
            //     console.log(1111);
            // };
    
            // console.log( fn );//    ,  fn      
            // console.log( fn() );//  fn,     
    
            // let a = fn;//       fn             a
            // let b = fn();//  fn, fn      b
    
    締め括りをつける
    本も薬も、よく読むと愚を治すことができます.一緒に進歩します.