ES6 アロー関数 --- (アロー関数と通常関数の違い)

アロー関数

パラメータ

// 只有一个参数
// f : 函数名称
// v :  函数参数
// v+v : 函数内容
 let f=v=> v+v

 console.log(f(10))  //20

2 つのパラメータ

// 两个参数需加小括号
 let ff=(v1,v2)=> v1+v2
 console.log(ff(10,20))

複数のステートメント

// 有多个语句的时候需要加大括号
// 有多个语句的时候return不能省略
let fff=(a,b,c)=>
{
    
    
    console.log(a)
    return a+b+c
}
console.log(fff(1,1,1))

オブジェクトを返す

// 返回对象需要在对象的外面加小括号包起来
let  p=(name,age)=>({
    
    name:name,age:age})
console.log(p('张三',18))

デモ配列のソート

//给数组里面的值排序
let  numbers=[10,2,11,15,22,36]
// let  res=numbers.sort(function(a,b){
    
    
//     return a-b
// })
let  res=numbers.sort((a,b)=>a-b)
console.log(res)

予防

  • ES6 では、矢印 (=>) を使用して定義することができます。
  • パラメーターがないか、複数のパラメーターは必要ありません。() を追加する必要があります。
  • 関数本体に複数のステートメントがある場合は、中かっこ {} を使用する必要があり、リターンには return を使用する必要があります。
  • アロー関数がオブジェクトを返すときは、かっこで囲む必要があります
  • アロー関数で表現をより簡潔に
  • アロー関数はコールバック関数を簡素化できる

これが指すアロー関数

これは通常の関数で

  • これは常に、 obj.funcなどの直接の呼び出し元 (js の this は実行コンテキスト) を表し、functhisobjです。
  • デフォルトの場合 (非厳密モードでは、'use strict' は使用されません)、直接の呼び出し元が見つからない場合、これはウィンドウを参照します(慣例)
  • 厳密モードでは、直接呼び出し元のない関数ではこれは未定義です
  • callapplybinding bindingを使用します。これはバインディング オブジェクトを指します。

これはアロー関数で

  • アロー関数には独自の this はなく、this が継承されます。デフォルトでは、実行時のオブジェクトではなく、定義されたオブジェクト (ホスト オブジェクト) を指します。定義されるとき、環境は次のようになります。 window、アロー関数 setTimeout や setInterval で便利に使用できます
  • アロー関数で this が固定点になっているのは、アロー関数内に this をバインドする機構があるからではなく、実際の理由は、アロー関数には独自の this がまったくないため、内部の this が の this であるためです。外側のコードブロック。
// var  p={
    
    
//     name:"张三",
//     say(){
    
    
//        console.log("姓名:"+this.name)
//     }
// }
// p.say()

// var  p={
    
    
//     name:"张三",
//     say(){
    
    
//         var a=function(){
    
    
//             console.log(this,this.name)   //找不到name  underfind
//         }
//         a()
//     }
// }
// p.say()


//通过定义全局变量
// var  p={
    
    
//     name:"张三",
//     say(){
    
    
//         let self=this   //把this赋值给变量量self
//         var a=function(){
    
    
//             console.log(self,self.name) //通过self调用
//         }
//         a()
//     }
// }
// p.say()

//使用bind 绑定
// var  p={
    
    
//         name:"张三",
//         say(){
    
    
            
//             var a=function(){
    
    
//                 console.log(this.name) 
//             }.bind(this)  //找不到this对象时,通过bind绑定this
//             a()
//         }
//     }
//     p.say()

//箭头函数
var  p={
    
    
    name:"张三",
    say(){
    
    
        
        var a=()=>{
    
    
            console.log(this.name) 
        }
        a()
    }
}
p.say()

アロー関数と通常の関数の違い

ポイント 1: 書き方: アロー関数は通常の関数より簡単です
ポイント 2:
- 通常の関数の this は直接呼び出し元を表します、たとえば: person.name の this は perspn を表します
- strict モード ('use strict') では、直接呼び出し元が見つからない場合、これは未定義です
- 非厳密モードでは、直接呼び出し元が見つからない場合、これはウィンドウです
- アロー関数 this には明確な点がなく、親クラスがあれば親クラスを直接継承します。クラスが明確に this を指していない場合、これは未定義を表します

アロー関数の注意点
- 1. 引数が1つの場合、
括弧は省略できます。 - 2. 引数が複数ある場合、または引数がない場合、括弧は省略できませ
ん。 - 3. 関数本体が1文の場合、括弧とreturnは省略できます。省略可
- 4. 関数本体が複数文の場合、中括弧とreturnは省略できません
- 5. これは明確な点がなく、親クラスを直接継承しています

おすすめ

転載: blog.csdn.net/weixin_45753871/article/details/112008037