JSの関数

1730 ワード

1.関数の5つの声明
  • 具名関数
  •  function f(x,y){
         return x+y
     }
     f.name // 'f'
    
  • 匿名関数
  •  var f
     f = function(x,y){
         return x+y
     }
     f.name // 'f'
    
  • 具名関数割り当て
  •  var f
     f = function f2(x,y){ return x+y }
     f.name // 'f2'
     console.log(f2) // undefined
    
  • window.Function(大域関数)
  •  var f = new Function('x','y','return x+y')
     f.name // "anonymous"
    
  • 矢印関数
  •  var f = (x,y) => {
         return x+y
     }
     var sum = (x,y) => x+y
     var n2 = n => n*n
    
    2.関数f.calの呼び出し方法f.call(asThis, input1,input2)のうち、asThisはthisとされ、[input 1,input 2]はargments禁止f(input 1,input 2)とされ、学会.callによってthisが理解されます.
    3.thisとargments
    最初のパラメータはthisで、後ろのパラメータは擬似配列argmentsを構成します.
  • strictモード
  • function f(){
        'use strict'
        console.log(this)
    }
    f.call() //   this  ,  undefined
    
  • 普通モード
  • function f(){
        console.log(this)
    }
    f.call()//    this  ,  window
    
    4.スコープ
    変数のスコープを決定:
  • は、まず自分の一番近い作用域において声明を探す(近くの原則)
  • .
  • 父の範囲で声明を探しています.
  • もないです.グローバル変数
  • です.
    面接問題:
    コードを持って直接作ると、必ず間違えます.先に声明を上げてください
    var a = 1
    function f1(){
        alert(a) //    
        var a = 2
    }
    f1.call()// undefined
    
    var a = 1
    function f1(){
        var a = 2
        f2.call()
    }
    function f2(){
        console.log(a) //    
    }
    f1.call()// 1
    
    var liTags = document.querySelectorAll('li')
    for(var i = 0; i
    5.クローズド
    関数がその範囲外の変数を使用している場合、この関数にこの変数を加えると、クローズドと呼ばれます.