10 Haziran 2020 Çarşamba

Arrow Function - Lambda

Giriş
Söz dizimi şöyle
(parameter-list) => function-body
1. Parametre Yoksa
Eğer parametre yoksa şöyle yaparız.
() => {}
2. Tek Parametre Varsa
Örnek
Şöyle yaparız.
(x) => {}
Örnek
Eğer tek parametre varsa şöyle yaparız.
_ => {}
Örnek
Tek parametre alan ve bir function dönen kod için şöyle yaparız.
const handleChange = (filterAttribute) => (e, val) => { 
    // Function body
}
Açıklaması şöyle.
handleChange is a function which accepts one argument (filterAttribute) and has a return value of another function.

The function it returns accepts two arguments, e and val.
3. Süslü Parantez Olmaması
Açıklaması şöyle.
Arrow function without curly braces return the function expression.
Örnek - Parametresiz
Şöyle yaparız
() => 'Hello world';
Şu kod ile aynıdır.
function() {
  return 'Hello world';
}
Örnek - Tek Parametre
Şöyle yaparız.
x => x
4. Süslü Parantez Olması
Süslü parantez varsa çok sayıda satır kullanabiliriz. Bu durumda bir şey return etmek zorunda değiliz.
Örnek
Şöyle yaparız
() => {
  const str = 'Hello world';
  return str;
}
Eğer bir nesne (object) dönmek istersek süslü parantez kullanmak gerekir. Şöyle yaparız
() => ({
  key: 'value',
  another_key: 'another_value'
});
En Yakın Context
Arrow function içinde kullanılan this en yakındaki context'e atıfta bulunur.

Örnek
Şöyle yaparız. Çıktı olarak aaa alırız
var name = 'aaa';
const person = {
    name: 'bbb',
    getName: () => {return console.log(this.name)}
}
person.getName();
Eğer şöyle yaparsak çıktı olarak bbb alırız
const name = 'aaa';
const Person = function() {
    this.name = 'bbb';
    this.getName = () => {return console.log(this.name)}
}
const test = new Person();
test.getName();    
Örnek
Lambda verilen parametrenin içindeki alana erişebilir.
Örnek
Şöyle yaparız. Çıktı olarak sondaki iki Andy gelir.
var arr = [{ "name":"John", "age":30, "cars":"BMW" },
 { "name":"Micheal", "age":30, "cars":"Ford,BMW" },
 { "name":"Andy", "age":29, "cars":"Ford" }, 
 { "name":"Andy", "age":29, "cars":"Ford,Toyota" }];

var result = arr.filter(({cars})=> !cars.includes("BMW"));

console.log(result);

Hiç yorum yok:

Yorum Gönder