JavaScript:関数のステップ関数のクローズド

14832 ワード

文字列の方法:
var str = '  abcdedf  ';
console.log(str.trim());//           
関数のステップ
関数の定義
//1.    
function fn (){
      }
//2.         
var fn = function(){
       }   fn()
//3.     
(function(){
        })() 
//4.    
var fn = new Function('       ',"         ")
new Function()
関数の呼び出し方法
関数定義:ネーミング関数、匿名関数
    :
1.     【fn()】
2.     【  .  ()】
3.    【new Fn()】
4.      【obj.onclick = function () { }】
5.      【window.setInterval(function(){ },1000)】
6.       【(function(){ }()】
関数内部のthis指向を変更します.
JavaScriptは、関数内部のthisの指向問題を処理するための関数的方法を提供してくれます.
コールの方法
call()        。            ,          this  。

fun.call(thisArg,arg1,arg2)

     :this      ;

     :         

      this  ,            ,    call,    
アプリ方法
fn.apply(obj,["aaa","bbb"]);
apply       call  
           
//  apply  Math.max this         :
var  arr = [11,22,33,44,66]
var n = Math.max.apply(arr,arr)
bind()の方法
thisを変えたいし、関数を呼びたくないので、bind()を使います.
fn.bind(thisArg,arg1,arg2)//  this  ,       
三つの方法のまとめ
this    。
   :
1.call  apply      ,        this2.call  apply        ,call    aru1,aru2..  apply      [arg]
3.bind       ,         this1.call      。
2. apply         。                   
3.bind       ,       thisthis   
厳格モード
JS:2つのモード[HTMLバージョンのようなもの]
1、ノーマルモード
2、厳格モード

JavaScript          ,        (strictmode)。ES5              JavaScript        ,          JSIE10               ,           。
        JavaScript         :

1.   Javascript        、     ,         。【    ,      】
2.              ,         。
3.       ,      。
4.    ECMAScript                ,       Javascript    。        :class, enum, export, extends, import, super       
オープン厳格モード
厳密モードをオンにします.「use strict」
	<script>"use strict"</script>//        
	<script>function fn () {
     "use strict"}</script>//         
厳密なモードはスクリプト全体または個々の関数に適用できます.したがって,使用時には,厳密モードをスクリプトのための厳密モードと関数のための厳密モードの両方に分けることができます.
スクリプトのための厳しいモードを開く
             ,                “use strict”;( ‘use strict’;)。


	"use strict";
	console.log("      。");


  "use strict"    ,                        。
関数の厳密モードを開く
function fn(){"use strict";return "      。";}

 "use strict"         ,      "    "  。
厳格なモードでの変化
厳格なモードはJavascriptの文法と行為に対して、いくつかの変化をしました.
変数規定
変数の説明はvarを追加しなければなりません.しかも変数を削除してはいけません.
      ,             ,       。          ,       var    ,     。
n = 3;
          。  ,delete x;       。
厳格なモードでthisは問題を指します.
厳密モードでは、一般関数thisはundefinedです.
            this   window   。
               this undefined。

       :
         new     ,this       
     ,        new  , this     undefined           
newthis     window 。
  、         。
関数の変化
パラメータの名前を変更できませんでした
         .    JavaScript    “     ”(ES6     )。        ,                。【iffor           ,       】
          :https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Strict_mode
    :
function fn (a,a) {
     console.log(a+a);}
fn(1,2);

高次関数
高次関数は他の関数を動作させる関数であり、受信関数はパラメータとして、または関数を戻り値として出力します.
  • は、関数をパラメータの関数として高次関数と呼び、パラメータをコールバック関数
  • と呼びます.
  • は、関数を戻り値の関数として、高次関数
  • とも呼ぶ.
    スコープ
                  :         。
    
    1.             。
    2.              。
    3.        ,             。
    
    包みを閉じる
    クローズド効果:別の関数のスコープ内の変数の関数にアクセスする権限があります.
    クローズド(closure):簡単に理解すると、作用領域は別の関数内の局所変数にアクセスする権利があり、親関数が閉じた後でも.
    <script>
    	function fn1(){
         
    		// fn1       
    		var num = 10;
    		function fn2(){
         
    			console.log(num); // 10
    		}
    		fn2()
    	}
    	fn1();
    </script>
    
    思考:関数外で関数内部の変数にアクセスするにはどうすればいいですか?
    function fn () {
         
    		var i = 7;
    		return function () {
         
    			console.log(i);
    		}
    		// function fn1 () {
         
    		// 	console.log(i);
    		// }
    		// fn1();
    	}
    	var n = fn();
    n();
    
    関数の再帰
    再帰とは何か
    関数が内部で呼び出されると、この関数は再帰関数です.
    関数自体を呼び出します.呼び出しは「スタックオーバーフロー」エラーが発生しやすいので、リセットします.
    function fn(){
         
        fn()
        return;//         
    }
    fn()/
    
    注意点:1.再帰点2.再帰点を停止する