12 Amaqhinga e-JavaScript Aphuthelwa Izifundo eziningi

12 Amaqhinga e-JavaScript Aphuthelwa Izifundo eziningi

Lapho ngiqala ukufunda i-JavaScript, into yokuqala engiyenzile kwakuwukwenza uhlu lwamaqhinga angisize ngonga isikhathi. Ngizibone kwabanye abahleli bezinhlelo, kumasayithi ahlukene nasemabhukwini.

Kulesi sihloko, ngizokukhombisa izindlela ezinhle eziyi-12 zokuthuthukisa nokusheshisa ikhodi yakho ye-JavaScript. Ezimweni eziningi zitholakala emhlabeni wonke.

Siyakukhumbuza: kubo bonke abafundi be-"Habr" - isaphulelo sama-ruble angu-10 lapho ubhalisa kunoma yisiphi isifundo se-Skillbox usebenzisa ikhodi yephromoshini ethi "Habr".

I-Skillbox iyancoma: Isifundo esiwusizo "I-Mobile Developer PRO".

Ihlunga amanani ahlukile

AMA-ARRAY

Uhlobo lwento ethi Setha lwethulwe ku-ES6, kanye..., i-opharetha yokusakaza, singayisebenzisa ukuze sakhe amalungu afanayo amasha aqukethe kuphela amanani ahlukile.

const array = [1, 1, 2, 3, 5, 5, 1]
const uniqueArray = [...new Set(array)];
 
console.log(uniqueArray); // Result: [1, 2, 3, 5]

Esimeni esijwayelekile, kudingeka ikhodi eyengeziwe ukwenza umsebenzi ofanayo.

Le nqubo isebenzela amalungu afanayo aqukethe izinhlobo zakudala: okungachazwanga, okungenalutho, i-boolean, iyunithi yezinhlamvu nenombolo. Uma usebenzisa amalungu afanayo aqukethe izinto, imisebenzi, noma amalungu afanayo engeziwe, uzodinga indlela ehlukile.

Ubude be-cache array emijikelezweni

IMIBHAYIBHELI

Uma ufunda amalophu, ulandela inqubo ejwayelekile:

for (let i = 0; i < array.length; i++){
  console.log(i);
}

Nokho, ngale syntax, i-loop ihlola ngokuphindaphindiwe ubude bamalungu afanayo ukuphindaphinda ngakunye.

Ngezinye izikhathi lokhu kungaba usizo, kodwa ezimweni eziningi kusebenza kahle kakhulu ukugcina ubude be-array, okuzodinga ukufinyelela okukodwa kukho. Singakwenza lokhu ngokuchaza ubude obuguquguqukayo lapho sichaza khona i-variable i, kanje:

for (let i = 0, length = array.length; i < length; i++){
  console.log(i);
}

Empeleni, kucishe kufane nangenhla, kodwa ngokwandisa usayizi weluphu sizothola ukonga kwesikhathi okubalulekile.

Isilinganiso somjikelezo omfushane (isilinganiso sikaMcCarthy)

ABASEBENZI ABANOMBANDELA

I-ternary operator iyindlela esheshayo nephumelelayo yokubhala izitatimende ezinemibandela ezilula (futhi ngezinye izikhathi ezingelula kangako):

x> 100? “ngaphezulu kuka-100”: “ngaphansi kuka-100”;
x> 100? (x>200? "ngaphezulu kuka-200": "phakathi kuka-100-200"): "ngaphansi kuka-100";

Kodwa ngezinye izikhathi ngisho no-opharetha we-ternary uyinkimbinkimbi kunalokho okudingekayo. Singasebenzisa 'futhi' && kanye 'noma' esikhundleni || Ama-opharetha aphusile ukuze ahlole izinkulumo ezithile ngendlela emfushane nakakhulu. Kuvame ukubizwa ngokuthi "i-short circuit" noma "isilinganiso sesifunda esifushane".

Kanjani lo msebenzi

Ake sithi sifuna ukubuyisela umbandela owodwa kwemibili noma ngaphezulu.

Ukusebenzisa && kuzobuyisela inani lokuqala elingamanga. Uma umsebenzi ngamunye uhlola ukuthi uyiqiniso, inkulumo yokugcina ehloliwe izobuyiselwa.

let one = 1, two = 2, three = 3;
console.log(one && two && three); // Result: 3
 
console.log(0 && null); // Result: 0

Isebenzisa || izobuyisela inani langempela lokuqala. Uma umsebenzi ngamunye uhlolela kumanga, inani lokugcina elihloliwe lizobuyiswa.

let one = 1, two = 2, three = 3;
console.log(one || two || three); // Result: 1
 
console.log(0 || null); // Result: null

Isibonelo se-1

Ake sithi sifuna ukubuyisela ubude bokuguquguquka, kodwa asilwazi uhlobo lwayo.

Kulokhu, ungasebenzisa uma/okunye ukuhlola ukuthi i-foo iwuhlobo olulungile, kodwa le ndlela ingase ibe yinde kakhulu. Ngakho-ke, kungcono ukuthatha "isifunda sethu esifushane".

return (foo || []).length;

Uma i-foo eguquguqukayo inobude obufanelekile, lokho kuzobuyiselwa. Uma kungenjalo sizothola u-0.

Isibonelo se-2

Ingabe ube nezinkinga zokufinyelela entweni esidleke? Ungase ungazi ukuthi into noma enye yezakhiwo zayo ezingaphansi ikhona, futhi lokhu kungaholela ezinkingeni.

Isibonelo, besifuna ukufinyelela impahla yedatha kule.state, kodwa idatha ayichazwa kuze kube uhlelo lwethu lubuyisela isicelo sokulanda.

Kuya ngokuthi siyisebenzisa kuphi, ukushayela le.state.data kungase kuvimbele uhlelo lokusebenza ukuthi luqale. Ukuze sixazulule inkinga, singagoqa lokhu ngenkulumo enemibandela:

if (this.state.data) {
  return this.state.data;
} else {
  return 'Fetching Data';
}

Inketho engcono kungaba ukusebenzisa "noma" opharetha.

return (this.state.data || 'Fetching Data');

Asikwazi ukushintsha ikhodi engenhla ukuze siyisebenzise &&. 'Ukulanda Idatha' && this.state.data opharetha uzobuyisela le.state.data kungakhathaliseki ukuthi ayichazwanga noma cha.

Iketango lokuzikhethela

Umuntu angase asikisele ukusebenzisa iketango lokuzikhethela lapho ezama ukubuyisela indawo ekujuleni kwesakhiwo sesihlahla. Ngakho, uphawu lombuzo? ingasetshenziswa ukubuyisa isakhiwo kuphela uma singelutho.

Isibonelo, singase senze kabusha isibonelo esingenhla ukuze sithole le.state.data?..(). Okusho ukuthi, idatha ibuyiselwa kuphela uma inani lingelona ize.

Noma, uma kubalulekile ukuthi isimo sichaziwe noma cha, singayibuyisela le.state?.data.

Guqulela ku-Boolean

UHLOBO UKUGUQULWA

Ngokungeziwe emisebenzini evamile ye-boolean eyiqiniso noma engamanga, i-JavaScript futhi iphatha wonke amanye amanani njengeqiniso noma amanga.

Kuze kube kuphawulwe ngenye indlela, wonke amanani kuJavaScript ayiqiniso, ngaphandle kokuthi 0, "", null, undefined, NaN futhi, vele, amanga. Lezi zamuva zingamanga.

Singashintsha kalula phakathi kwalokhu kokubili sisebenzisa i-opharetha !, ephinde iguqule uhlobo lube i-boolean.

const isTrue  = !0;
const isFalse = !1;
const alsoFalse = !!0;
 
console.log(true); // Result: true
console.log(typeof true); // Result: "boolean"

Guqula ube yiyunithi yezinhlamvu

UHLOBO UKUGUQULWA

Ukuguqulwa okusheshayo ukusuka kunombolo ukuya kuyunithi yezinhlamvu kungenziwa ngale ndlela elandelayo.

const val = 1 + "";
 
console.log(val); // Result: "1"
console.log(typeof val); // Result: "string"

Guqula ibe inombolo ephelele

UHLOBO UKUGUQULWA

Senza ukuguqulwa okuphambene kanje.

let int = "15";
int = +int;
 
console.log(int); // Result: 15
console.log(typeof int); Result: "number"

Le ndlela ingase futhi isetshenziselwe ukuguqula uhlobo lwedatha ye-boolean ibe amanani ezinombolo avamile, njengoba kuboniswe ngezansi:

console.log(+true);  // Return: 1
console.log(+false); // Return: 0

Kungase kube nezimo lapho + kuzohunyushwa khona njengo-opharetha we-concatenation esikhundleni so-opharetha ongeziwe. Ukuze ugweme lokhu, kufanele usebenzise ama-tildes: ~~. Lo opharetha ulingana no -n-1. Isibonelo, ~15 ilingana no -16.

Ukusebenzisa ama-tilde amabili emugqeni kwenqaba ukusebenza ngoba - (- - n - 1) - 1 = n + 1 - 1 = n. Ngamanye amazwi, ~-16 ilingana no-15.

const int = ~~"15"
console.log(int); // Result: 15
console.log(typeof int); Result: "number"

<Quick Powers

IMISEBENZI

Ukuqala ku-ES7, ungasebenzisa i-opharetha yokuchaza ** njengesifinyezo samandla. Lokhu kushesha kakhulu kunokusebenzisa i-Math.pow(2, 3). Kubonakala kulula, kodwa leli phuzu lifakwe ohlwini lwamasu, ngoba alikhulunywa yonke indawo.

console.log(2 ** 3); // Result: 8

Akufanele kudidaniswe nophawu ^, oluvame ukusetshenziselwa ukuchaza. Kodwa ku-JavaScript lena i-opharetha ye-XOR.

Ngaphambi kwe-ES7, isinqamuleli ** sasingasetshenziswa kuphela emandleni esisekelo 2 kusetshenziswa isisebenzisi sokushintsha kancane esingakwesokunxele <<:

Math.pow(2, n);
2 << (n - 1);
2**n;

Isibonelo, u-2 << 3 = 16 ulingana no-2 ** 4 = 16.

Nntanta ube inombolo ephelele

IMISEBENZI / UKUGUQUKA UHLOBO

Uma udinga ukuguqula ukuntanta kube inombolo ephelele, ungasebenzisa i-Math.floor(), i-Math.ceil() noma i-Math.round(). Kodwa kunendlela esheshayo, yalokhu esiyisebenzisayo |, okungukuthi, i-opharetha NOMA.

console.log(23.9 | 0);  // Result: 23
console.log(-23.9 | 0); // Result: -23

Ukuziphatha | kuncike kakhulu ekutheni ubhekene nezinombolo eziphozithivu noma ezinegethivu, ngakho le ndlela ifaneleka kuphela uma uzethemba kokwenzayo.

n | 0 ikhipha yonke into ngemva kwesihlukanisi sedesimali, inciphisa ukuntanta ibe inamba.

Ungathola umphumela ofanayo wokuzungeza usebenzisa ~~. Ngemva kokuguqulwa okuphoqelelwe ekubeni inamba, inani lihlala lingashintshiwe.

Ikhipha izinombolo ezilandelanayo

I-Opharetha NOMA ingasetshenziswa ukususa noma iyiphi inombolo yamadijithi enombolweni. Lokhu kusho ukuthi asikho isidingo sokuguqula izinhlobo ezinjengalezi:

let str = "1553";
Number(str.substring(0, str.length - 1));

Kunalokho simane sibhale:

console.log(1553 / 10   | 0)  // Result: 155
console.log(1553 / 100  | 0)  // Result: 15
console.log(1553 / 1000 | 0)  // Result: 1

Ukuxhumanisa okuzenzakalelayo

AMAKILASI

Izilinganiso zomcibisholo we-ES6 zingasetshenziswa ezindleleni zekilasi, futhi ukubophezela kuyashiwo. Lokhu kusho ukuthi ungavalelisa ezigamekweni eziphindaphindwayo ezifana nale.myMethod = this.myMethod.bhind(lokhu)!

import React, { Component } from React;
 
export default class App extends Compononent {
  constructor(props) {
  super(props);
  this.state = {};
  }
 
myMethod = () => {
    // This method is bound implicitly!
  }
 
render() {
    return (
      <>
        <div>
          {this.myMethod()}
        </div>
      </>
    )
  }
};

Ukusikwa kwe-array

AMA-ARRAY

Uma udinga ukuhlubula amanani ohlwini, kunezindlela ezisheshayo kune-splice().

Isibonelo, uma ubazi usayizi wamalungu afanayo okuqala, ungabhala ngaphezulu impahla yayo yobude ngendlela elandelayo:

let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
array.length = 4;
 
console.log(array); // Result: [0, 1, 2, 3]

Kodwa kukhona enye indlela, futhi esheshayo. Uma isivinini siyilokho okubalulekile kuwe, nazi ukukhetha kwethu:

let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
array = array.slice(0, 4);
 
console.log(array); // Result: [0, 1, 2, 3]

Iphrinta inani(ama) lokugcina lamalungu afanayo

AMA-ARRAY
Le nqubo idinga ukusetshenziswa kwendlela ye-slice().

let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
 
console.log(array.slice(-1)); // Result: [9]
console.log(array.slice(-2)); // Result: [8, 9]
console.log(array.slice(-3)); // Result: [7, 8, 9]

Ifometha ikhodi ye-JSON

I-JSON

Kungenzeka ukuthi usuyisebenzisile kakade i-JSON.stringify. Ubuwazi ukuthi isiza ukufometha i-JSON yakho?

Indlela ye-stringify() ithatha amapharamitha amabili ongawakhetha: umsebenzi wokumiselela, ongasetshenziswa ukuhlunga i-JSON ebonisiwe, kanye nenani lesikhala.

console.log(JSON.stringify({ alpha: 'A', beta: 'B' }, null, 't'));
 
// Result:
// '{
//     "alpha": A,
//     "beta": B
// }'

Yilokho kuphela, ngethemba ukuthi zonke lezi zindlela zaziwusizo. Yimaphi amaqhinga owaziyo? Zibhale emibhalweni.

I-Skillbox iyancoma:

Source: www.habr.com

Engeza amazwana