アロー関数
パラメータ
// 只有一个参数
// 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 は実行コンテキスト) を表し、funcのthisはobjです。
- デフォルトの場合 (非厳密モードでは、'use strict' は使用されません)、直接の呼び出し元が見つからない場合、これはウィンドウを参照します(慣例)
- 厳密モードでは、直接呼び出し元のない関数ではこれは未定義です
- call、apply、binding 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. これは明確な点がなく、親クラスを直接継承しています