JavaScript Academy · Ders

Noktasız Stil

Bağımsız değişkenleri adlandırmadan işlevleri birleştirin.

4. ders / 413 adım

Noktasız Stil, CoddyKit'te ücretsiz bir JavaScript Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, JavaScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. JavaScript Academy kursu toplamda 4 dersten oluşur.

Noktasız Üslup Nedir

Noktasız (veya örtük) üslup, bağımsız değişkenlerden söz etmeden başka işlevleri birleştirerek işlevler tanımlar. Bağımsız değişkenler, aktarılıp duran örtük noktalardır.

function double(n) { return n * 2; }
const nums = [1, 2, 3];
// pointed: argument named explicitly
console.log(nums.map((n) => double(n))); // [2, 4, 6]
// point-free: no named argument
console.log(nums.map(double));            // [2, 4, 6]

İşlevleri Doğrudan Aktarma

Bir geri çağırma işlevi bağımsız değişkenini başka bir işleve yalnızca aktarıyorsa, işlevi sarmalamak yerine adını doğrudan geçirebilirsiniz.

const len = (s) => s.length;
const words = ["a", "bb", "ccc"];
console.log(words.map((w) => w.length)); // pointed: [1, 2, 3]
console.log(words.map(len));             // point-free: [1, 2, 3]

İşlev Birleştirme

Noktasız kod, büyük ölçüde birleştirmeye dayanır: Bir işlevin çıktısını sonrakine aktararak yeni bir işlev oluşturur.

const compose = (f, g) => (x) => f(g(x));
const inc = (n) => n + 1;
const double = (n) => n * 2;
const incThenDouble = compose(double, inc);
console.log(incThenDouble(3)); // (3+1)*2 = 8

Bir pipe Yardımcısı

pipe, birçok kişiye compose'dan daha anlaşılır gelen soldan sağa bir okuma sağlar. İşlevleri sırayla uygular.

const pipe = (...fns) => (x) => fns.reduce((acc, f) => f(acc), x);
const inc = (n) => n + 1;
const double = (n) => n * 2;
const f = pipe(inc, double);
console.log(f(3)); // 8

İşlem Hatları Oluşturma

pipe ile çok adımlı bir dönüşümü, veriyi hiçbir zaman adlandırmadan adlandırılmış bir işlev olarak ifade edebilirsiniz.

const pipe = (...fns) => (x) => fns.reduce((a, f) => f(a), x);
const trim = (s) => s.trim();
const lower = (s) => s.toLowerCase();
const clean = pipe(trim, lower);
console.log(clean("  HELLO  ")); // "hello"

Kürleme Noktasız Üslubu Etkinleştirir

Kürleme, çok bağımsız değişkenli bir işlevi tek bağımsız değişkenli işlevler zincirine dönüştürür. Böylece doğrudan birleştirilmeye hazır tekli işlevler üretilir.

const multiply = (a) => (b) => a * b;
const triple = multiply(3);
console.log([1, 2, 3].map(triple)); // [3, 6, 9]

Kısmi Uygulama

Bazı bağımsız değişkenleri önceden sabitlemek, doğrudan aktarabileceğiniz özelleştirilmiş bir işlev üretir; bu da noktasız kod yazmanın başka bir yoludur.

const add = (a, b) => a + b;
const add10 = add.bind(null, 10);
console.log([1, 2, 3].map(add10)); // [11, 12, 13]

Koşul İşlevlerini Birleştirme

Satır içi ok işareti karmaşası olmadan temiz ve noktasız süzgeçler oluşturmak için mantıksal yardımcıları birbirinden üretebilirsiniz.

const isEven = (n) => n % 2 === 0;
const negate = (fn) => (x) => !fn(x);
const isOdd = negate(isEven);
console.log([1, 2, 3, 4].filter(isOdd)); // [1, 3]

Okunabilirlik Dengeleri

Noktasız üslup zarif olabilir, ancak aşırıya kaçıldığında anlaşılmaz hâle gelir. Niyeti açıklığa kavuşturduğunda kullanın (map(double)); bağımsız değişkeni adlandırmak anlamayı kolaylaştırıyorsa noktalı üslupta kalın.

const names = ["ada", "bob"];
console.log(names.map((n) => n.toUpperCase())); // ["ADA","BOB"]

Yöntem Başvurularındaki Tuzak

Bir yöntemi adıyla aktarmak this değerini kaybettirebilir. İşlev bir nesne bağlamına dayanıyorsa onu sarmalayın veya bağlayın.

const calc = {
  factor: 2,
  scale(n) { return n * this.factor; }
};
console.log([1, 2].map(calc.scale.bind(calc))); // [2, 4]

Gerçek Dönüşümleri Birleştirme

Tümünü bir araya getirdiğinizde, küçük ve adlandırılmış işlevlerin bir işlem hattında birleştirilmesi bildirimsel, sınanabilir ve noktasız bir veri akışı sağlar.

const pipe = (...fns) => (x) => fns.reduce((a, f) => f(a), x);
const toNums = (arr) => arr.map(Number);
const onlyPos = (arr) => arr.filter((n) => n > 0);
const sum = (arr) => arr.reduce((a, n) => a + n, 0);
const process = pipe(toNums, onlyPos, sum);
console.log(process(["3", "-1", "4"])); // 7

Hızlı Kontrol

Noktasız üslup.

Özet

Noktasız üslup, bağımsız değişkenleri adlandırmadan başka işlevleri birleştirerek işlevler oluşturur. İşlevleri başvuruyla geçirin (map(double)), compose/pipe ile birleştirin ve tekli işlevler oluşturmak için kürleme veya kısmi uygulama kullanın. Yöntem başvurularında kaybolan this değerine dikkat edin; daha anlaşılır olduğu durumlarda noktalı üslupta kalın.

Başlamak ücretsiz

Yapay zeka eğitmeniyle JavaScript öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
59
Dersler
200

Sıkça Sorulan Sorular

“Noktasız Stil” dersi ücretsiz mi?

Evet — “Noktasız Stil” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve JavaScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. JavaScript Academy kursu toplamda 4 dersten oluşur.

“Noktasız Stil” dersinde ne öğreneceğim?

Bağımsız değişkenleri adlandırmadan işlevleri birleştirin. JavaScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

JavaScript Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te JavaScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Noktasız Stil” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu JavaScript Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her JavaScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Saf İşlevler ve Yan Etkiler
  2. Bildirimsel Veri Dönüşümü
  3. Değişiklik Yapmaktan Kaçınma
  4. Noktasız Stil
← JavaScript Academy Sayfasına Dön