【メモ】JavaScript ES(6-10)の全バージョン文法を再学習する——パラメータ、矢印関数


記事の目次
  • 、パラメータのデフォルト値
  • 1.ES 5
  • .ES 6
  • 、処理不定パラメータ
  • 1.ES 5
  • .ES 6
  • 、リセットパラメータの逆演算
  • 1.ES 5
  • .ES 6
  • 、ES 6の矢印関数
  • 一、パラメータのデフォルト値
    1.ES 5
    /*
    * ES5     
    */
    function f (x, y, z) {
      if (y === undefined) {
        y = 7
      }
      if (z === undefined) {
        z = 42
      }
      return x + y + z
    }
    
    console.log(f(1)) // 50
    console.log(f(1, 8)) // 51
    console.log(f(1, 8, 43)) // 52
    
    2.ES 6
    /*
    * ES6     
    */
    function f (x, y = 10, z = x + y) {
      console.log(f.length) // 1,           
      return x * y + z
    }
    
    console.log(f(1)) // 21
    console.log(f(1, 8)) // 17
    console.log(f(1, 8, 43)) // 51
    console.log(f(1, undefined, 43)) // 53,           undefined
    
    二、処理不安定パラメータ
    1.ES 5
    /*
    * ES5      
    */
    function sum () {
      let num = 0
      Array.prototype.forEach.call(arguments, function (item) {
        num += item * 1
      })
      return num
    }
    console.log(sum(1, 2, 3))
    
    2.ES 6
    /*
    * ES6      
    */
    function sum (base, ...nums) {
      let num = 0
      // Rest parameter
      nums.forEach(function (item) {
        num += item * 1
      })
      return base * 2 + num
    }
    console.log(sum(1, 2, 3)) // 7
    
    三、レスポンスパラメータの逆演算
    1.ES 5
    /*
    * ES5      
    */
    function sum (x = 1, y = 2, z = 3) {
      return x + y + z
    }
    let data = [4, 5, 6]
    console.log(sum(data[0], data[1], data[2])) // 15
    console.log(sum.apply(this, data)) // 15
    
    apply()メソッドは、与えられたthis値の関数として、配列(または同様の配列オブジェクト)として提供されるパラメータを呼び出します.
    注意:call()メソッドの役割は、appy()方法と同様であり、違いはcall()メソッドが受け入れるのはパラメータリストであり、apply()メソッドが受けるのはパラメータ配列である.
    2.ES 6
    /*
    * ES6      
    */
    function sum (x = 1, y = 2, z = 3) {
      return x + y + z
    }
    let data = [4, 5, 6]
    // spread       
    console.log(sum(...data)) // 15
    
    四、ES 6の矢印関数
    /*
    * ES6     
    */
    
    //          
    function f1 () {}
    f1()
    let f2 = function () {}
    f2()
    
    //     
    let f3 = () => {}
    f3()
    
    //          ,       
    let f4 = name => {
      console.log(name)
    }
    f4('oliver')
    
    //             ,        ,      
    let f5 = (x, y, z) => x + y + z
    console.log(f5(1, 2, 3)) // 6
    
    //             (object literal)              
    let f6 = (x, y, z) => ({
      x: x,
      y: y,
      z: z
    })
    console.log(f6(1, 2, 3)) // {x: 1, y: 2, z: 3}
    
    /*
    * this    
    */
    //     :     ,this    
    let obj1 = {
      name: 'obj',
      say: function () {
        console.log(this.name)
      }
    }
    obj1.say() // obj
    
    //     :    this   ,       
    let obj2 = {
      name: 'obj',
      say: () => {
        console.log(this.name)
      }
    }
    obj2.say() //   webpack   Window,   undefined
    
    //           
    let arr = [10, 20, 1, 2]
    arr.sort((x, y) => x - y)
    console.log(arr) // [1, 2, 10, 20]
    
    展開:
  • thisは、詳細解析(矢印関数)
  • を指す.