Javascriptにおける匿名矢印関数の重要な違い(推奨)
2151 ワード
バンド名関数とは、関数が表示された場所に名前を与えた関数で、function abs(x){}です。匿名関数とは、関数がfunctionというキーワードだけを持っていますが、absのような関数名の関数はありません。ES 6標準は、新しい関数を追加しました。矢印関数の表面は匿名関数に相当し、関数定義を簡略化しました。それぞれの違いは何ですか?
1バンド名と匿名関数の違い
違い:匿名関数はアドレス割り当てを別の変数let aに伝え、その後aで関数を呼び出す必要があります。また、バンド名関数は、表示地に関数名が与えられているので、直接にこの関数名で呼び出すことができます。
帯域名関数の戻り値は、abs(x)関数の戻り値などの関数の内部の戻り値でnumber変数です。関数呼び出し時に直接abs(6)で呼び出すと、これはとても分かりやすいです。
ES 6規格には、新しい関数が追加されました。矢印関数です。どうしてアロウFunctionですか?それは矢印で定義されているからです。矢印関数の表面は匿名関数に相当し,関数定義を簡略化した。
矢印関数には二つの書式があります。一つは一つの表現だけを含んでいます。
矢印関数は匿名関数の簡単な書き込みのように見えるが、実際には矢印関数と匿名関数には明確な違いがある。矢印関数内部のthisは語法作用領域であり、文脈で決定される。
呼び出し関数
obj 1のfn関数は、JavaScript関数によるthisバインディングのエラー処理のため、予期される結果が得られず、this.birthはwindowまたはundefinedを指す。
しかし、obj 2、fn関数は矢印関数であり、矢印関数は完全にthisの指向を修復しています。
名前付き関数と比較して、匿名関数はアドレス割り当てを別の変数let aに伝え、その後aを使って関数を呼び出す必要がある。匿名関数と比較して,矢印関数はthisの指向を完全に修復し,thisはいつも語法の作用領域を指す。
以上は小编が皆さんに绍介したJavascriptに匿名の矢印関数が付いている重要な违いです。皆さんに助けてほしいです。もし何か疑问があれば、メッセージをください。小编はすぐに返事します。
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に匿名の矢印関数が付いている重要な违いです。皆さんに助けてほしいです。もし何か疑问があれば、メッセージをください。小编はすぐに返事します。