Javascript矢印関数とlambada
2251 ワード
()=>{}基本的な特徴
SE 6の矢印関数は、実際の開発においては比較的便利です.通常はいくつかの特徴があります.矢印関数のthisは、外部作用領域 に結合される.アーgments がありません.対象に戻りたいなら、小包を入れてください. callとappyはthis に入ることができません.
lambadaは、コンピュータ科学に匿名関数を示しており、本質的には動作を簡略化するために用いられている.簡単に言えば、入力と出力を表す方法です.
ステップ1:
平方演算表現(x*x):数式(λ表式の入力を表します.
平方に2(x*x+2)を追加します.数学式:
より優雅に実現するには、上記のような方法は、特に優雅ではなく、可読性が良くなく、より優雅になる方法が必要である.
前の出力は後の関数として入力されますが、どうやって実現すればいいですか?Javascriptでは、reduceという方法を提供しています.
総括:上の過程から見られます.二つの主要な鍵となる過程があります.、矢印関数は匿名関数であり、書き込みを簡略化する .、矢印関数が変数としてreduce関数に伝達されるコールバック したがって、矢印関数は、関数的な動作を大幅に簡略化する.実はlambada表現は、Javascriptでは匿名関数です.
矢印関数の概要:矢印関数は、map、filter、reduceなどの純関数の動作に適しています. 矢印関数の内部では、一般的にはthisを使用しないでください.
問題1:
もしthisがAを指したいなら、こう書いてもいいです.
問題2:
lamdaと矢印関数
SE 6の矢印関数は、実際の開発においては比較的便利です.通常はいくつかの特徴があります.
(() => {a: 1})() // undefiend, ,
(() => ({a: 1})()
矢印関数とスランダ表現lambadaは、コンピュータ科学に匿名関数を示しており、本質的には動作を簡略化するために用いられている.簡単に言えば、入力と出力を表す方法です.
ステップ1:
平方演算表現(x*x):数式(λ表式の入力を表します.
λx.x * x
JavaScriptで実現:(function (x) {
return x * x;
})()
ステップ2:平方に2(x*x+2)を追加します.数学式:
(λx.x * x)(λx.x + 2)
Javascriptで実現する:(function(x) {
return x + x
})((function () {
return x * x
})())
実は匿名関数を利用してから、入れ子を続けます.しかし、矢印関数があれば、上記の操作をより簡単に行うことができます.(x => x + 2)((x => x * x)())
ステップ3:より優雅に実現するには、上記のような方法は、特に優雅ではなく、可読性が良くなく、より優雅になる方法が必要である.
前の出力は後の関数として入力されますが、どうやって実現すればいいですか?Javascriptでは、reduceという方法を提供しています.
const action = [
x => x * x,
x => x + 2
];
let res = action.reduce((res, cur) => cur(res), 2);
ステップ4:総括:上の過程から見られます.二つの主要な鍵となる過程があります.
矢印関数の概要:
問題1:
function A() {
this.foo = 1
}
A.prototype.bar = () => console.log(this.foo)
let a = new A()
a.bar() //undefined
対象aは、作用域を構成していないからである.もしthisがAを指したいなら、こう書いてもいいです.
function A() {
this.foo = 1;
this.bar = () => {
console.log('value', this.foo);
}
}
let a = new A();
a.bar(); //1
barの声明は関数Aの作用域内部にあるからです.問題2:
const A = {
foo: 1,
bar: () => {
console.log('value', this.foo);
}
}
let a = Object.create(A);
a.bar(); //undefined
正常な値を出力したいなら、functionで定義するべきです.const A = {
foo: 1,
bar: function (){
console.log('value', this.foo);
}
}
let a = Object.create(A);
a.bar(); // value 1
参考文献:lamdaと矢印関数