[JS関数]矢印関数vs一般関数
5920 ワード
矢印関数vs一般関数
1.最小化関数
通常の関数とは異なり、いくつかの内容を省略して、関数を簡略化することができます.
矢印関数のサムネイル
2. this
次のコードでは、基本論理は同じですが、通常の関数を使用して作成された法線値と矢印値の出力の結果は異なります.これは、矢印関数と通常の関数のthisが異なるためです.
const Yseo = {
name: '0seo',
normal: function () {
console.log(this.name)
},
arrow: () => {
console.log(this.name)
}
}
Yseo.normal() //noraml함수가 호출될 때 연결되어 있는 객체가 Yseo이기 때문에 this는 "0seo"가 됩니다
Yseo.arrow() // undefined : 호출위치와 상관 없이 함수 범위에서 this가 정의됩니다.(즉, 화살표함수가 만들어지는 위치에서 정의됩니다.)
コールバック関数にこの値が定義されていない場合、
例
const timer = {
name: '0seo!',
timeout: function () {
setTimeout(function () {
console.log(this.name)
}, 2000)
}
}
timer.timeout() // undefined
次のコードでは、timeout呼び出しの位置がsettimootという関数の内部であるため、this.nameはundefinedを出力します.したがって、timerの名前を出力する場合は、通常の関数ではなく矢印関数にコードを変更する必要があります.以下に示します.const timer = {
name: '0seo!',
timeout: function () {
setTimeout(() => {
console.log(this.name)
}, 2000)
}
}
timer.timeout() // 0seo! (2초 뒤)
settimeoutやsetIntervalなどのタイマ関数を実行する場合、コールバック関数は矢印関数を使用するよりも通常の関数を使用するほうが効果的です.Reference
この問題について([JS関数]矢印関数vs一般関数), 我々は、より多くの情報をここで見つけました https://velog.io/@0seo8/JS-함수-화살표함수-vs-일반함수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol