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:
- Isifundo sokwenza iminyaka emibili
"Ngingumthuthukisi wewebhu we-PRO" .- Inkambo eku-inthanethi
"C# unjiniyela kusuka ku-0" .- Isifundo sonyaka esisebenzayo
"Unjiniyela we-PHP kusuka ku-0 kuye ku-PRO" .
Source: www.habr.com