Javascriptにおける匿名矢印関数の重要な違い(推奨)


バンド名関数とは、関数が表示された場所に名前を与えた関数で、function abs(x){}です。匿名関数とは、関数がfunctionというキーワードだけを持っていますが、absのような関数名の関数はありません。ES 6標準は、新しい関数を追加しました。矢印関数の表面は匿名関数に相当し、関数定義を簡略化しました。それぞれの違いは何ですか?
1バンド名と匿名関数の違い
違い:匿名関数はアドレス割り当てを別の変数let aに伝え、その後aで関数を呼び出す必要があります。また、バンド名関数は、表示地に関数名が与えられているので、直接にこの関数名で呼び出すことができます。
帯域名関数の戻り値は、abs(x)関数の戻り値などの関数の内部の戻り値でnumber変数です。関数呼び出し時に直接abs(6)で呼び出すと、これはとても分かりやすいです。

function abs(x){
 if(x>=0){
  return x;
 }else{
  return -x;
 }
}
しかし匿名関数は?以下に示すように、関数名は示されていませんが、ここのabsはこの匿名関数のアドレスとして与えられていますので、abs(-3)を直接使うことができます。

let abs=function(x){ 
 if(x>=0){
  return x;
 }else{
  return -x;
 }
}
2矢印関数
ES 6規格には、新しい関数が追加されました。矢印関数です。どうしてアロウFunctionですか?それは矢印で定義されているからです。矢印関数の表面は匿名関数に相当し,関数定義を簡略化した。
矢印関数には二つの書式があります。一つは一つの表現だけを含んでいます。

x => x * x
上の矢印関数は匿名関数に相当します。

function (x) {
 return x * x;
}
もう一つは複数の語句が含まれています。このときは「…」と「return」を省略してはいけません。

(x,y) => {
 if (x > 0) {
  return x + y;
 }
 else {
  return -x + y;
 }
}
3矢印関数と匿名関数の違い
矢印関数は匿名関数の簡単な書き込みのように見えるが、実際には矢印関数と匿名関数には明確な違いがある。矢印関数内部のthisは語法作用領域であり、文脈で決定される。
呼び出し関数obj1.getAge(2017)と呼び出しobj2.getAge(2017)は同じ結果を得ますか?
obj 1のfn関数は、JavaScript関数によるthisバインディングのエラー処理のため、予期される結果が得られず、this.birthはwindowまたはundefinedを指す。
しかし、obj 2、fn関数は矢印関数であり、矢印関数は完全にthisの指向を修復しています。

var obj1 = {
 birth: 1990,
 getAge: function (year) { 
  let fn=function(y){
   return y - this.birth; // this  window undefined
  }; 
  return fn(year); 
 }
};
var obj2 = {
 birth: 1990,
 getAge: function (year) {
  var fn = (y) => y - this.birth; // this.birth 1990
  return fn(year);
 }
};
4まとめ
名前付き関数と比較して、匿名関数はアドレス割り当てを別の変数let aに伝え、その後aを使って関数を呼び出す必要がある。匿名関数と比較して,矢印関数はthisの指向を完全に修復し,thisはいつも語法の作用領域を指す。
以上は小编が皆さんに绍介したJavascriptに匿名の矢印関数が付いている重要な违いです。皆さんに助けてほしいです。もし何か疑问があれば、メッセージをください。小编はすぐに返事します。